Код: Выделить всё
private static AggregateIterable averageVendorTotalSent(MongoCollection collection) {
return collection.aggregate(Arrays.asList(
Aggregates.group("$transaction vendor", Accumulators.avg("Average Vendor Transaction Sent", "$amount sent"))
));
}
Код: Выделить всё
_id: "69cb3d75c6146e2646e66330"
date: "2026-02-17"
transaction vendor: "TIM HORTONS #47 _F"
amount sent: 11.21
amount received: 0
remainingBalance: 3269.39
Код: Выделить всё
{"_id": "SQ *THE TASTE O _F", "Average Vendor Transaction Sent": 25.82}
{"_id": "HECTOR'S YOUR I", "Average Vendor Transaction Sent": 27.72}
{"_id": "TIM HORTONS #47 _F", "Average Vendor Transaction Sent": 10.573142857142857}
{"_id": "SSV TO: 89966442264", "Average Vendor Transaction Sent": 2.75}
{"_id": "7 ELEVEN STORE _F", "Average Vendor Transaction Sent": 14.66}
{"_id": "DOLLARAMA # 859 _F", "Average Vendor Transaction Sent": 3.64}
{"_id": "CANADIAN TIRE # _F", "Average Vendor Transaction Sent": 43.65}
{"_id": "WENDY'S RESTAUR _F", "Average Vendor Transaction Sent": 5.7875}
{"_id": "DOORDASHWENDYS _V", "Average Vendor Transaction Sent": 21.525}
{"_id": "HUSKY GAS STATI", "Average Vendor Transaction Sent": 68.73}
{"_id": "ROCK AUTO 165.78_V", "Average Vendor Transaction Sent": 235.33}
{"_id": "GARIBALDI GRAPH _F", "Average Vendor Transaction Sent": 9.92}
Я хотел бы теперь отсортировать эти данные по этому среднему значению.
Я потратил несколько часов на эксперименты, пытаясь решить эту проблему.
Я исследовал встроенную функцию сортировки для драйвера, но, похоже, не нашел способа сортировки с ее помощью, не основанной на имени поля
и Я изучил документацию по Projection во время конвейера агрегации, но не думаю, что это правильный путь.
Я подумывал просто отсортировать ее на Java постфактум, но это кажется хакерским, поскольку я сомневаюсь, что для этого нет ни передовой практики, ни встроенного решения.
Как мне выполнить сортировку по этому значению, не являющемуся полем, в конвейере агрегации, если я не должен быть в конвейере агрегации для это; следует ли это просто сделать на Java, следует ли мне создавать новую коллекцию с этими измененными данными и хранить ее в новых документах? На данный момент я не ищу кого-то, кто подскажет мне решение, я просто был бы признателен, если бы кто-нибудь указал мне правильное направление. Если я искал в нужном месте, возможно, просто поясню, где мне нужно искать.
Любая помощь приветствуется.