也許有人知道.. 在我的MongoDB集合中的每個文檔的樣子:
[
_id: 1,
login: user1,
strength: {
a: 5,
b: 2
},
group: 2
]
如何找到各組前10頁的文件以最大的總和力量和力量。
例子: 我的文件是這樣的:
[ login: login1, group: 2, strength: { a: 2, b: 5 } ]
[ login: login2, group: 1, strength: { a: 1, b: 2 } ]
[ login: login3, group: 3, strength: { a: 1, b: 4 } ]
[ login: login5, group: 1, strength: { a: 1, b: 1 } ]
[ login: login6, group: 1, strength: { a: 10, b: 4 } ]
[ login: login7, group: 3, strength: { a: 0, b: 2 } ]
[ login: login8, group: 3, strength: { a: 11, b: 4 } ]
我希望得到的結果:
[ group: 1, users: [ { login: login6, sumOfStrength: 14 }, { login: login2, sumOfStrength: 3 } ] ]
[ group: 2, users: [ { login: login1, sumOfStrength: 7 } ] ]
[ group: 3, users: [ { login: login8, sumOfStrength: 15 }, { login: login3, sumOfStrength: 5 } ] ]
總之,在這個例子中,我想用「組」分組結果字段,並且只選擇每個組中具有最多「a」和「b」字段的前兩個文檔。這是可行的嗎?
直到現在我做到了:
db.collection('myCollection').aggregate(
[
{ $group: { _id: '$group', users: { $push: { login: '$login', sumOfStrength: { $sum: [ '$strength.a', '$strength.b'] } } } } }
])
但如何在數組「用戶」元素爲每個組的排序和數量限制?
你到目前爲止做了什麼? – barbakini
現在請看。我添加了更多信息。 – nelkor