Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Search for ObjectId of a document: pymongo

I want to access a document in collection by 'name' attribute for getting its ObjectId so that i can insert that unique objectid to other document for reference.

cursorObject = db.collectionIngredient.find({'name': 'sugar'})

I want _id field of cursorObject.

cursorObject.'_id' or cursorObject._id not working.

I have tried __getitem__, __getattribute__ and so much internet surfing but couldn't able to find a way.

Please help

like image 905
jimish Avatar asked Dec 09 '25 19:12

jimish


1 Answers

First, as @jjmartinez pointed out, find returns a cursor, which you need to iterate over, in order to get hold of the documents returned by your query. The _id field belongs to the documents, not the cursor.

I'm guessing that in your case the name is unique, so you can avoid cursor/iterating if you use find_one instead of find. Then you get the document directly.

Then, to access the _id, you just need a standard dict-item access:

id = doc['_id']

So we get:

ingredient = db.collectionIngredient.find_one({'name': 'sugar'})
if ingredient is not None:
    id = ingredient['_id']
else:
    id = None
like image 107
shx2 Avatar answered Dec 14 '25 09:12

shx2



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!