我正在建立最常用卡片组合的统计数据,这可以通过展开$玩家并使用$ 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