python - 我可以只获取 Cursor 对象(pymongo)中的第一项吗?

所以我通过

创建了一个 Cursor 对象
cdb=self.mongo['bleh_bleh_bleh_setup_here']
data=cdb[collection].find(query_commands_here)

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

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

编辑:

为了让事情更清楚,'bleh_bleh_bleh_setup_here' 只是连接到所需 mongoDB 的路径,'query_commands_here' 是像 {field1:{'$gt':num1}, field2:{'$ 这样的查询ne':num2}} 之类的东西。线

data=cdb[collection].find(query_commands_here)

会给我一个 Cursor 对象,我可以用 for 循环对其进行迭代。所以像

for item in data:
    print item

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

最佳答案

.find_one()会返回一个符合条件的文档:

cdb[collection].find_one(query_commands_here)

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

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

https://stackoverflow.com/questions/34645467/

相关文章:

mongodb - 更新 mongodb 中的嵌套文档

javascript - Mongoose 连接到 MongoDB Atlas 的最佳池大小是多少?

javascript - MongoError : cannot change _id of a d

node.js - 将数据插入 MongoDB - 没有错误,没有插入

mongodb - 当父字段未知时,在嵌套文档中查找具有字段的记录

node.js - Mongoose,查找,返回特定属性

java - 指定字段对于 MongoDB 是 transient 的,但对于 RestContro

mongodb - MongoDB批量FindAndModify的解决方案

performance - 字段类型在 MongoDB 索引中是否重要?

node.js - 聊天项目 - 使用 socket.io 进行负载平衡