我可以只获取游标对象(pymongo)中的第一个项吗?

2024-06-11 01:44:52 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我创建了一个游标对象

cdb=self.mongo['bleh_bleh_bleh_setup_here']
data=cdb[collection].find(query_commands_here)

不用担心上面的语法。假设我可以成功地创建这样的游标对象

我知道我可以做一个for循环来遍历这个对象,但是我想要的只是这个对象的第一项。有没有比循环更有效的方法?

编辑:

为了使事情更清楚,“bleh-bleh-bleh-setup”只是连接到所需mongoDB的路径,“query-commands-here”是类似于{field1:{'$gt':num1}, field2:{'$ne':num2}}之类的查询。线路

data=cdb[collection].find(query_commands_here)

将给我一个游标对象,我可以用for循环迭代它。所以像这样的事情

for item in data:
    print item

将打印出对象中的每个条目。它工作得很好。但是,根据文档,这个游标对象应该有一个名为.hasNext()的方法,如果有下一个条目,这个方法应该返回True。到目前为止,我还没有找到一个办法让它工作,因为一些奇怪的原因。data.next()给了我一个条目。我想确保我可以有这个条件来确保我不会为一个不包含任何内容的游标对象调用.next(),尽管我没有预见到这种情况的发生,但我会假设它会在某个时刻发生。


Tags: 对象方法fordataheresetup条目find
1条回答
网友
1楼 · 发布于 2024-06-11 01:44:52

^{}将返回符合以下条件的单个文档:

cdb[collection].find_one(query_commands_here)

请注意,PyMongo Cursor没有hasNext()方法。我要做的是调用cursor.next()并处理StopIteration异常:

try:
    record = cursor.next()
except StopIteration:
    print("Empty cursor!")

相关问题 更多 >