2011-10-21 13 views

risposta

36

dovrebbe essere:

from pymongo.objectid import ObjectId 
thing = db.things.find_one({'_id': ObjectId('4ea113d6b684853c8e000001') }) 

EDIT: L'importazione corrente è: from bson.objectid import ObjectId

+0

ah l'importazione fa la differenza, grazie! – MFB

+0

per pymongo> 2.2, vedere https://stackoverflow.com/a/10919658/6613450 –

0

thing = db.things.find_one({'_id':ObjectId('4ea113d6b684853c8e000001')}) dovrebbe funzionare

+0

grazie lobster1234 la tua risposta è anche corretto, ma è stato l'importazione che mi mancava, applausi – MFB

23

PyMongo ha cambiato la sua struttura. ObjectID non viene più importato da pymongo, ma da bson. Ora dovrebbe essere:

from bson.objectid import ObjectId 
thing = db.things.find_one({'_id': ObjectId('4ea113d6b684853c8e000001')}) 

Come promemoria, per pypi/pymongo, non installare il pacchetto “BSON”. PyMongo viene fornito con un proprio pacchetto bson; facendo "pip install bson" installa un pacchetto di terze parti che è incompatibile con PyMongo.

+0

vedere http://stackoverflow.com/questions/10401499/mongokit-importerror-no-module-named-objectid-error – Sean

0

La documentazione PyMongo non sembra essere sincronizzata con la versione corrente. ObjectIds sono ora sotto lo spazio dei nomi bson.objectid. Se ricordo bene, sono stati così fin dalla versione 2.3. Utilizzare da ObjectId di importazione bson.objectid.

1

per stamparlo:

import pymongo 
from bson.objectid import ObjectId  
print(db.things.find_one({'_id': ObjectId('4ea113d6b684853c8e000001')})) 

se non si desidera stampare, conservare in altre variabili

Problemi correlati