【发布时间】:2016-09-14 15:43:57
【问题描述】:
如果我有Player表格的文件
{name: String, score: Int}
我有 Group 文档,其中组代表玩家列表
{groupName: String, players: [ObjectID]}
玩家可以属于多个组。
我想对 Player 文档进行聚合,按 Group 分组(例如,通过一个聚合管道获取每个组的玩家得分总和)。
我知道的选项:
=> 将Player docs 反向指针指向与它们关联的Group 文档,然后将$group 指向GroupID。但我宁愿不必修改Player 集合。 (也许有一种方法可以在管道期间将GroupIDs “添加”到文档中?)
=> 为每个组单独调用并使用$match 阶段过滤到当前组中被查询的玩家。但我更喜欢打一个简单的电话。
我怎样才能实现这样的聚合? MongoDB 聚合是否有适用于此的东西?
(顺便说一句,将组和玩家相互映射到进行调用的内存中并不是问题。因此,将玩家列表作为参数传递的选项确实是公平的游戏。)
【问题讨论】:
标签: javascript mongodb meteor aggregation-framework