[英]pymongo sort and find_one issue
我正在尝试使用键position
对名为user_score
的集合进行排序,并获取结果的第一个文档。 在这种情况下,集合user_score
不存在,我希望得到None
的结果,但我得到了 cursor 回来。
1.结果=
db.user_score.find({'score':'$lt':score}}).sort("position,pymongo.DESCENDING").limit(1)
现在我像下面这样更改了我的查询,但没有得到预期的任何结果。
2.结果=
db.user_score.find_one({'score':{'$lt':score}}, sort=[("position", pymongo.DESCENDING)])
我的第一个查询有什么问题?
谢谢
在您的第一个查询中,在排序 function 中,您传递一个参数("position,pymongo.DESCENDING")
,而您应该传递两个 arguments ("position", pymongo.DESCENDING)
。
一定要注意你的引号。
这是查找时的默认 mongodb 行为。 每当你使用find
时,你都会得到一个结果列表(在本例中是一个可迭代游标)。 如果查询没有匹配项,只有findOne
- 或者它是 PyMongo 等效的find_one
将返回None
。
使用列表将 cursor 的值转换为字典:
list(db.user_score.find({'score':'$lt':score}}).sort("position",pymongo.DESCENDING).limit(1))[0]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.