У меня есть две коллекции, здания и ордена. Здание может иметь много ордеров (отношение 1: N). Я пытаюсь получить «десятку статистических данных» (у каких зданий больше всего заказов) с помощью структуры агрегации. Моя проблема в том, как я могу получить общее количество заказов на здание? Есть ли способ «смешать» данные из двух коллекций в одном агрегате?MongoDB Сумма агрегации по отношению
В настоящее время я делаю что-то вроде этого:
db.buildings.aggregate([
{ $group : _id : { street : "$street",
city : "$city",
orders_count : "$orders_count" }},
{ $sort : { _id.orders_count : -1 }},
{ $limit : 10}
]);
Но в этом случае «orders_count» предварительно вычисленное значение. Он работает, но очень неэффективен и замедляется для «живой» агрегации.
Есть ли способ подсчитать связанные заказы на здание непосредственно в агрегации (имейте в виду, что есть способ ...)?
Большое спасибо
агрегация может только работать в одной коллекции - почему бы не запросить сбор заказов для этой информации? в каком порядке не содержится информация о том, для какого здания оно? если вы добавляете, какой документ заказа выглядит, возможно, мы можем предложить конкретную агрегацию. –
Я сделал это над зданиями, потому что мне также нужны данные из этого сложения. У заказов есть building_id. – patrickkeller