如何在PyMongo中选择Mongodb数据库中的N个最大值

wfypjpf4  于 2023-06-29  发布在  Go
关注(0)|答案(1)|浏览(154)

我试图选择一些mongodb集合中最大的元素。例如,我的数据库集合的结构如下:
| 得分| score |
| - -----| ------------ |
| 五百| 500 |
| 六百| 600 |
我已经知道如何选择具有最大得分值的人(如下所示):
max = leaderboard_data.find_one(sort=[(“score”,-1)])[“score”]
但是我该如何编辑它来根据“score”字段选择mongodb数据库集合中 n 个最大的项目呢?比如前10名的成绩?
当我查看mongodb特定的文档时,我看到了使用$limit符号的解决方案,但我不知道如何在PyMongo中使用它。

zynd9foi

zynd9foi1#

find()语句与sortlimit结合使用。

import pymongo

db = pymongo.MongoClient()['test']

# Set up some data
for i in range(20):
    db['mycollection'].insert_one({'username': f'person{i}', 'score': i})

# sort by score descending, limit to top 10
for record in db['mycollection'].find({}, {'_id': 0}).sort('score', pymongo.DESCENDING).limit(10):
    print(record)

打印:

{'username': 'person19', 'score': 19}
{'username': 'person18', 'score': 18}
{'username': 'person17', 'score': 17}
{'username': 'person16', 'score': 16}
{'username': 'person15', 'score': 15}
{'username': 'person14', 'score': 14}
{'username': 'person13', 'score': 13}
{'username': 'person12', 'score': 12}
{'username': 'person11', 'score': 11}
{'username': 'person10', 'score': 10}

相关问题