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

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

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.