buscar por ObjectId en mongodb con pymongo

82

Necesito buscar un ObjectId con python usando pymongo pero siempre obtengo este error. ¿Alguna idea de cómo buscar?

import pymongo
from pymongo import MongoClient
from pymongo import ObjectId

gate = collection.find({'_id': ObjectId(modem["dis_imei"])})
print gate

    Traceback (most recent call last):
  File "C:\Users\gerswin\Documents\Proyectos\Demonio py\test.py", line 2, in <module>
    import pymongo
  File "C:\Python27\lib\site-packages\pymongo\__init__.py", line 80, in <module>
    from pymongo.connection import Connection
  File "C:\Python27\lib\site-packages\pymongo\connection.py", line 39, in <module>
    from pymongo.mongo_client import MongoClient
  File "C:\Python27\lib\site-packages\pymongo\mongo_client.py", line 45, in <module>
    from pymongo import (auth,
  File "C:\Python27\lib\site-packages\pymongo\database.py", line 22, in <module>
    from pymongo.collection import Collection
  File "C:\Python27\lib\site-packages\pymongo\collection.py", line 25, in <module>
    from pymongo.cursor import Cursor
  File "C:\Python27\lib\site-packages\pymongo\cursor.py", line 19, in <module>
    from bson import RE_TYPE
ImportError: cannot import name RE_TYPE
Gerswin Lee
fuente
1
¿Cuál es la versión de pymongo?
Evgenii
mi versión es pymongo == 2.5
Gerswin Lee

Respuestas:

162

Yo uso pymongo 2.4.1.

from bson.objectid import ObjectId
[i for i in dbm.neo_nodes.find({"_id": ObjectId(obj_id_to_find)})]
Evgenii
fuente
Actualizo pymongo a 2.5, todo funciona. ¿Puedes ver el mensaje de error y tu código?
Evgenii
@GerswinLee ¿notas el "from bson.objectid"? Obtendrá un error de importación al intentar importarlo desde pymongo en la versión 2.5 Necesita el paquete python-bson. No estoy seguro de si está instalado con pymongo o no.
hyprnick
Para que funcione, tuve que convertirme obj_id_to_finden una cadena, es decirstr(obj_id_to_find)
luke