我想通过'name'属性访问集合中的文档以获取其ObjectId,以便我可以将该唯一的objectid插入到其他文档中以供参考。
cursorObject = db.collectionIngredient.find({'name': 'sugar'})
我想要_id
cursorObject字段。
cursorObject.'_id' or cursorObject._id not working.
我已尝试过__getitem__
,__getattribute__
这么多网上冲浪但无法找到方法。
请帮忙
答案 0 :(得分:2)
首先,正如@jjmartinez指出的那样,find
返回一个游标,您需要迭代它,以便获取查询返回的文档。 _id
字段属于文档,而不是光标。
我猜你的情况下名称是唯一的,所以如果你使用find_one
而不是find
,你可以避免光标/迭代。然后你直接得到文件。
然后,要访问_id
,您只需要一个标准的dict-item访问权限:
id = doc['_id']
所以我们得到:
ingredient = db.collectionIngredient.find_one({'name': 'sugar'})
if ingredient is not None:
id = ingredient['_id']
else:
id = None
答案 1 :(得分:1)
执行cursorObject = db.collectionIngredient.find({'name': 'sugar'})
时,您拥有一组文档,而不是单个元素。所以你需要探索所有的收藏品。您需要在光标内迭代:
try:
cursorObject = db.collectionIngredient.find({'name': 'sugar'})
except:
print "Unexpected error:", sys.exc_info()[0]
for doc in cursorObject:
print doc