0
計數這是一出在我的數據庫中約10萬行的:集團通過對陣列的MongoDB
{
"_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勝認爲)
分組的所有甲板組合
它不是很清楚,你可以添加預期輸出的文檔你提供了嗎? – felix
@felix對於2)它將是甲板(這是一個由int組成的數組),其數量/勝數(我已經在給定查詢中爲player1Won過濾了,所以我只需要按甲板分組並計數這是結果)。我假設我需要對int數組(p1.deck)進行排序,以便它忽略卡片的順序 – kentor