如果我有形式蒙戈聚集 - 積累了場的值的不同羣體
{name: String, score: Int}
的Player
文件和我有Group
文件,其中基團代表的球員
{groupName: String, players: [ObjectID]}
玩家名單可以屬於多個組。
我想要做一個Player
文件的聚合,按Group
分組(如得到每個組的玩家總分數和一個聚合管道)。
選擇我所知道的:
=>由GroupID
給Player
文檔回到指針Group
文檔他們一個關聯,然後$group
。但我更喜歡不必修改Player
集合。 (也許有一種方法可以在流水線中將「GroupID
s」添加到文檔中?)
=>爲每個組分別調用一次,並使用$match
階段過濾到當前所查詢組中的玩家對於。但我更喜歡做一個簡單的電話。
我該如何實現這樣的聚合? MongoDB Aggregation是否有適用於此的東西?
(順便說一下,在進行調用的內存中將組和玩家映射到對方並不是一個問題,因此涉及將玩家列表作爲參數的選項確實是公平的遊戲。)