[英]Can I just get the first item in a Cursor object (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!")
您還可以執行以下操作(無需處理StopIteration
異常) :
cur = cdb[collection].find(query_commands_here)
record = next(cur, None)
if record:
# Do your thing
這是有效的,因為 python 內置的 next() 將在到達迭代器末尾時返回默認值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.