Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python pymongo排序并查找一个问题_Python_Mongodb_Pymongo - Fatal编程技术网

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