szukaj według ObjectId w mongodb z pymongo

85

Muszę wyszukać ObjectId za pomocą Pythona za pomocą pymongo, ale zawsze otrzymuję ten błąd. Jakieś pomysły, jak szukać?

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
źródło
1
Jaka jest wersja Pymongo?
Evgenii
moja wersja to pymongo == 2.5
Gerswin Lee

Odpowiedzi:

169

Używam pymongo 2.4.1.

from bson.objectid import ObjectId
[i for i in dbm.neo_nodes.find({"_id": ObjectId(obj_id_to_find)})]
Evgenii
źródło
Aktualizuję pymongo do 2.5 - wszystko działa. Czy widzisz komunikat o błędzie i kod?
Evgenii
@GerswinLee zauważyłeś „from bson.objectid”? Pojawi się błąd importu podczas próby zaimportowania go z pymongo w wersji 2.5 Potrzebujesz pakietu python-bson. Nie jestem pewien, czy jest to zainstalowane z pymongo, czy nie.
hyprnick
Żeby to zadziałało, musiałem zamienić obj_id_to_findsię w strunę, czylistr(obj_id_to_find)
Łukasz