2011-10-21 8 views

Respuesta

36

que debe ser:

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

EDIT: La importación actual es: from bson.objectid import ObjectId

+0

ah, la importación marca la diferencia, ¡gracias! – MFB

+0

para Pymongo> 2.2, consulte https://stackoverflow.com/a/10919658/6613450 –

0

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

+0

gracias lobster1234 su respuesta también es correcto, pero era la importación que me estaba perdiendo, aplausos – MFB

23

PyMongo ha cambiado su estructura. ObjectID ya no se importa desde pymongo, pero desde bson. Ahora debería ser:

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

Como recordatorio, por pypi/pymongo, no instale el paquete “BSON”. PyMongo viene con su propio paquete bson; al hacer "pip install bson" instala un paquete de terceros que es incompatible con PyMongo.

+0

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

0

La documentación de PyMongo no parece estar sincronizada con la versión actual. ObjectIds ahora están bajo el espacio de nombres bson.objectid. Si recuerdo bien, han sido así desde la versión 2.3. Usar desde bson.objectid import ObjectId.

1

imprimirlo:

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

si no desea imprimir, almacenar en otras variables

Cuestiones relacionadas