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 }
])