如果我有形式蒙戈聚集 - 积累了场的值的不同群体
{name: String, score: Int}
的Player
文件和我有Group
文件,其中基团代表的球员
{groupName: String, players: [ObjectID]}
玩家名单可以属于多个组。
我想要做一个Player
文件的聚合,按Group
分组(如得到每个组的玩家总分数和一个聚合管道)。
选择我所知道的:
=>由GroupID
给Player
文档回到指针Group
文档他们一个关联,然后$group
。但我更喜欢不必修改Player
集合。 (也许有一种方法可以在流水线中将“GroupID
s”添加到文档中?)
=>为每个组分别调用一次,并使用$match
阶段过滤到当前所查询组中的玩家对于。但我更喜欢做一个简单的电话。
我该如何实现这样的聚合? MongoDB Aggregation是否有适用于此的东西?
(顺便说一下,在进行调用的内存中将组和玩家映射到对方并不是一个问题,因此涉及将玩家列表作为参数的选项确实是公平的游戏。)