我正在建立最常用卡片組合的統計數據,這可以通過展開$玩家並使用$ players.spells.d的_id進行分組來輕鬆完成 - 它運行速度非常快,並且完全符合我的要求。與相同的數組元素總和的MongoDB聚合如何?
我的問題是我無法弄清楚如何考慮卡的級別。 (卡可以升級) - 當關卡丟失時,這意味着它是1級。所以我想最終得到的是卡組ID(所有卡的組合,它們已經被分類,所以不需要做任何魔術技巧,已經用下面的$ players.spells.d分組生成),以及該組合的每張卡的平均水平。
這是我的查詢:
db.matches.aggregate([
{$unwind: "$players"},
{$group: {
'_id': '$players.spells.card',
'count': {'$sum' : 1}
}
},
{$sort: {'count' : -1}}
]);
下面是一個匹配文件的樣子,每場比賽都有2名球員:
{
"_id" : 123,
"players" : [
{
"id" : 41,
"spells" : [
{
"card" : 11,
"level" : 2
},
{
"card" : 12
},
{
"card" : 13,
"level" : 2
},
{
"card" : 14
},
{
"card" : 15,
"level" : 2
},
{
"card" : 16,
"level" : 2
},
{
"card" : 17,
"level" : 2
},
{
"card" : 18
}
]
},
{
"id" : 31,
"spells" : [
{
"card" : 7
},
{
"card" : 88
},
{
"card" : 9
},
{
"card" : 10
},
{
"card" : 11
},
{
"card" : 12
},
{
"card" : 13
},
{
"card" : 14
}
]
}
]
}
在此先感謝您的幫助!
是什麼櫃ID,什麼是players.spells.d? – sergiuz
我更新了上面的查詢,d應該是卡,我正在讓事情變得更容易閱讀,並忘記了一個地方:) – ruinernix