пошук за ObjectId у mongodb з pymongo


85

Мені потрібно шукати ObjectId за допомогою python, використовуючи pymongo, але я завжди отримую цю помилку. Будь-які ідеї, як шукати?

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
Що таке версія pymongo?
Євгеній

моя версія pymongo == 2.5
Герсвін Лі

Відповіді:


170

Я використовую pymongo 2.4.1.

from bson.objectid import ObjectId
[i for i in dbm.neo_nodes.find({"_id": ObjectId(obj_id_to_find)})]

Я оновлюю pymongo до 2.5 - все працює. Ви бачите повідомлення про помилку та свій код?
Євгеній

@GerswinLee зауважте "від bson.objectid"? Ви отримаєте помилку імпорту при спробі імпортувати її з pymongo у версії 2.5. Вам потрібен пакет python-bson. Я не впевнений, встановлено це з pymongo чи ні.
гипник

Для того, щоб я змусив це працювати, мені довелося перетворитися obj_id_to_findна струну, тобтоstr(obj_id_to_find)
luke
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.