Mongodb查找集合中最大的10个数组项
我的收藏品包括Mongodb查找集合中最大的10个数组项,mongodb,mongodb-query,aggregation-framework,Mongodb,Mongodb Query,Aggregation Framework,我的收藏品包括 [{ "username": "xxx", "wonTournaments": ['111', '123', '1234'] }, { "username": "xxx2", "wonTournaments": ['111', '123'] }, { "username": "xxx3", "wonTournaments": ['111', '123', '1234', '11111'] }, { "username": "xxx4", "wonT
[{
"username": "xxx",
"wonTournaments": ['111', '123', '1234']
}, {
"username": "xxx2",
"wonTournaments": ['111', '123']
}, {
"username": "xxx3",
"wonTournaments": ['111', '123', '1234', '11111']
}, {
"username": "xxx4",
"wonTournaments": ['111']
}]
我想检索Wontournamts更大的用户的顶级项目。谁能告诉我如何在MongoDB中做到这一点。我正在使用云MongoDB atlas
在上述情况下,顶级用户是['xxx3'、'xxx'、'xxx2'、'xxx4']您可以使用以下方法轻松完成此操作:
您将需要更改
集合
,使用您在db中拥有的实际集合的名称。您的意思是您想从该集合中获得最多冠军锦标赛的前10名用户
?确切地说,谁的冠军锦标赛数组大小更大,他将成为下一个冠军锦标赛的前10名用户。非常感谢它发挥了很多作用。我想理解什么是用户名:1它只是指我们应该在$project
中包含或排除哪些文件。通过使用username:1,我们说的是在最终输出中也显示username。您可以在中查看有关它的更多详细信息。
db.collection.aggregate([
{ $project: { username: 1, won: { $size: "$wonTournaments" } } },
{ $sort: { "won": -1 } },
{ $limit : 10 }
])