这是我数据库中约 1000 万行中的一行:
{
"_id" : ObjectId("58f569159f809c49ffc5cdbb"),
"date" : ISODate("2017-03-21T09:10:07.686Z"),
"p1" : {
"_id" : 1765906,
"deck" : [
33,
25,
59,
38,
62,
3,
33,
57
],
"crowns" : 3
},
"p2" : {
"_id" : 2520156,
"deck" : [
25,
69,
86,
8,
44,
61,
69,
50
],
"crowns" : 2
}
}
这是一个游戏战斗的日志。牌组是一个阵列,由 8 张不同的牌组成。我正在尝试找到获胜次数最多的卡。可以通过比较皇冠来确定获胜者(我设法选择了玩家 1 获胜的所有文件)。
我想要达到的目标:
不幸的是,我无法执行组查询来返回我正在寻找的内容(获胜次数最多的卡片)。
我也在尝试找到最成功的套牌(获胜的数量就足够了——应该忽略该数组中指定的卡片顺序)。
我已经尝试过,但一段时间后返回了一个空错误:
db.battle_logs.aggregate([
{
$addFields: {
"player1won": { "$cmp": [ "$p1.crowns", "$p2.crowns" ] }
}
},
{ $match: { "player1won": 1 }},
{
$group:
{
_id: "$p1.deck",
count: { $sum: 1 }
}
}
], {
allowDiskUse:true,
cursor:{}
})
我希望将所有套牌组合按其获胜次数分组(仅考虑 player1 获胜)