作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
<分区>
也许有人知道..我的 mongoDB 集合中的每个文档如下所示:
[
_id: 1,
login: user1,
strength: {
a: 5,
b: 2
},
group: 2
]
如何找出每组中strength.a和strength.b之和最大的前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'] } } } } }
] )
但是如何对每个组的“users”数组中的元素进行排序和限制数量?
我是一名优秀的程序员,十分优秀!