我有两个系列,建筑和订单。一座建筑可以有许多订单(1:N 关系)。我正在尝试使用聚合框架实现“十大统计”(哪些建筑物的订单最多)。我的问题是,我怎样才能获得每栋建筑的总订单?有没有办法在一个聚合中“混合”来自两个集合的数据?
目前我正在做这样的事情:
db.buildings.aggregate( [
{ $group : _id : { street : "$street",
city : "$city",
orders_count : "$orders_count" }},
{ $sort : { _id.orders_count : -1 }},
{ $limit : 10}
] );
但在这种情况下,“orders_count”是预先计算的值。它可以工作,但效率非常低,并且“实时”聚合速度很慢。
有没有办法直接在聚合中计算每个建筑物的相关订单(我确定有办法......)?
非常感谢