У меня есть следующий запрос, работающий так, как задумано в mongo:
db.test.aggregate([{$unwind: "$reports"}, {$project: {reports: 1, avg: {$avg: "$reports.linesCount"}}}`])
Однако я не могу преобразовать это в Java через spring. Похоже, вы не можете запускать функции агрегирования, такие как avg, в ProjectionOperation, но это возможно в GroupOperation. В ProjectionOperation вообще нет метода avg ().
Aggregation aggregation = Aggregation.newAggregation(
Aggregation.unwind("$reports"),
Aggregation.group(Fields.fields("_id"))
.avg("reports.linesCount").as("avg"));
Есть идеи, почему это может быть так, если это явно возможно в монго? Есть ли другой способ перевести мой запрос на Java?




Ваш запрос: {reports: 1, avg: {$avg: "$reports.linesCount"}}
агрегаты в поле reports.linesCount, но ваш Java-код пытается агрегировать на .avg("reports.processingTime")
Так что вы можете работать не на том поле. Проверьте свой запрос
Извините, это была опечатка. Это не имеет значения, поскольку в данном контексте оба поля функционально идентичны.