pymongo sort和find_one问题

Kri*_*hna 12 python mongodb pymongo

我正在尝试对user_score使用密钥调用的集合进行排序,position并获取结果的第一个文档.在这种情况下,集合user_score不存在,我希望得到结果None,但我得到了一个光标.

结果=

db.user_score.find({'score':'$lt':score}}).sort("position,pymongo.DESCENDING").limit(1)
Run Code Online (Sandbox Code Playgroud)

现在我改变了我的查询,如下所示并没有得到任何预期的结果.

2.结果=

db.user_score.find_one({'score':{'$lt':score}}, sort=[("position", pymongo.DESCENDING)])
Run Code Online (Sandbox Code Playgroud)

我的第一个查询有什么问题?

谢谢

小智 12

在你的第一个查询中,在sort函数中你传递一个参数("position,pymongo.DESCENDING"),当你应该传递两个参数时("position", pymongo.DESCENDING).

请务必记住您的引号.


kil*_*ahn 8

我的回应有点晚了,但似乎当前版本的PyMongo确实支持对find_one调用的排序操作。

此处的文档页面中(请grep find_one部分):

尽管会忽略所有limit参数,但find()的所有参数也是find_one()的有效参数。返回单个文档;如果找不到匹配的文档,则返回None。

用法示例如下:

filterdict = {'email' : 'this.is@me.com'}
collection.find_one(filterdict, sort=[('lastseen', 1)])
Run Code Online (Sandbox Code Playgroud)

希望这对更多的搜索者有所帮助!