tìm kiếm bằng ObjectId trong mongodb với pymongo


82

Tôi cần tìm kiếm một ObjectId bằng python bằng pymongo nhưng tôi luôn gặp lỗi này. Bất kỳ ý tưởng làm thế nào để tìm kiếm?

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
Phiên bản của pymongo là gì?
Evgenii

phiên bản của tôi là pymongo == 2.5
Gerswin Lee

Câu trả lời:


162

Tôi sử dụng pymongo 2.4.1.

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

Tôi cập nhật pymongo lên 2,5 - tất cả đều hoạt động. Bạn có thể thấy thông báo lỗi và mã của bạn không?
Evgenii

@GerswinLee nhận thấy "từ bson.objectid"? Bạn sẽ gặp lỗi nhập khi cố nhập từ pymongo trong phiên bản 2.5 Bạn cần gói python-bson. Tôi không chắc liệu đó có được cài đặt với pymongo hay không.
hyprnick

Đối với tôi để làm cho nó hoạt động, tôi phải biến obj_id_to_findthành một chuỗi tức làstr(obj_id_to_find)
luke
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.