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

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)})]

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.