Python pymongo排序并查找一个问题
我试图使用键Python pymongo排序并查找一个问题,python,mongodb,pymongo,Python,Mongodb,Pymongo,我试图使用键position对名为user\u score的集合进行排序,并获取结果的第一个文档。在这种情况下,收集的用户评分不存在,我希望得到的结果是无,但我得到了一个光标 一,。 结果= 现在我像下面这样更改了我的查询,并没有得到任何预期的结果 二,。 结果= db.user_score.find_one({'score':{'$lt':score}}, sort=[("position", pymongo.DESCENDING)]) 我的第一个问题是什么 谢谢这是查找时的默认mongod
position
对名为user\u score
的集合进行排序,并获取结果的第一个文档。在这种情况下,收集的用户评分
不存在,我希望得到的结果是无
,但我得到了一个光标
一,。
结果=
现在我像下面这样更改了我的查询,并没有得到任何预期的结果
二,。
结果=
db.user_score.find_one({'score':{'$lt':score}}, sort=[("position", pymongo.DESCENDING)])
我的第一个问题是什么
谢谢这是查找时的默认mongodb行为。无论何时使用
find
都会得到一个结果列表(在本例中是一个可编辑的光标)。只有findOne
-或者它的PyMongo等价物find_one
在查询没有匹配项的情况下才会返回None
。在第一次查询中,在sort函数中传递一个参数(“position,PyMongo.DESCENDING”)
,此时应该传递两个参数(“position”,PyMongo.DESCENDING)
请注意引号。使用列表将光标的值转换为dict:
list(db.user\u score.find({'score':'$lt':score}}).sort(“position”,pymongo.DESCENDING).limit(1))[0]
我的响应有点晚,但pymongo的当前版本似乎确实支持对find\u-one调用的操作
从“文档”页面(请将“查找”部分变灰):
find()的所有参数也是find_one()的有效参数,
尽管任何限制参数都将被忽略。返回单个
文档,如果找不到匹配的文档,则为无
示例用法如下所示:
filterdict = {'email' : 'this.is@me.com'}
collection.find_one(filterdict, sort=[('lastseen', 1)])
希望这能帮助更多最近的搜索者 我也是这样解决的。find_one不接受.sort,但find()接受,因此排序、限制和获取第一个列表项是goSomeone否决我答案的方法。无论谁投票否决了我的答案,请提供具体反馈,说明为什么我的答案被认为没有用处?
filterdict = {'email' : 'this.is@me.com'}
collection.find_one(filterdict, sort=[('lastseen', 1)])