1
我有两个集合,建筑物和订单。建筑物可以有许多订单(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”是预先计算的值。它可以工作,但效率很低,并且会减慢“实时”聚合。
有没有一种方法可以直接在聚合中统计每个建筑物的相关订单(确定有办法...)?
非常感谢
聚集只能在单个集合上运行 - 为什么不查询订单集合中的这些信息?订单中是否包含关于哪个建筑物的信息?如果你添加什么订单文件看起来也许我们可以建议具体的聚合。 –
我在建筑物上做过这个,因为我也需要这个colllection的信息。订单有building_id。 – patrickkeller