Сортировка с помощью Java-драйвера MongoDB во время конвейера агрегации по значению Mutated(?)JAVA

Программисты JAVA общаются здесь
Anonymous
Сортировка с помощью Java-драйвера MongoDB во время конвейера агрегации по значению Mutated(?)

Сообщение Anonymous »

Я выполняю следующий запрос в своей базе данных MongoDB, используя драйвер Java

Код: Выделить всё

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, следует ли мне создавать новую коллекцию с этими измененными данными и хранить ее в новых документах? На данный момент я не ищу кого-то, кто подскажет мне решение, я просто был бы признателен, если бы кто-нибудь указал мне правильное направление. Если я искал в нужном месте, возможно, просто поясню, где мне нужно искать.
Любая помощь приветствуется.

Вернуться в «JAVA»