pymongo ile mongodb'de ObjectId ile arama


85

Pymongo kullanarak python ile bir ObjectId aramam gerekiyor ama her zaman bu hatayı alıyorum. Nasıl arama yapılacağına dair bir fikrin var 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
Pymongo'nun versiyonu nedir?
Evgenii

benim versiyonum pymongo == 2.5
Gerswin Lee

Yanıtlar:


170

Pymongo 2.4.1 kullanıyorum.

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

Pymongo'yu 2.5'e güncelliyorum - hepsi çalışıyor. Hata mesajını ve kodunuzu görebiliyor musunuz?
Evgenii

@GerswinLee "from bson.objectid" e dikkat edin? 2.5 sürümünde pymongo'dan içe aktarmaya çalışırken bir içe aktarma hatası alacaksınız. Python-bson paketine ihtiyacınız var. Bunun pymongo ile yüklü olup olmadığından emin değilim.
hyprnick

İşe yaraması için, obj_id_to_findbir dizeye dönüşmem gerekiyordu, yanistr(obj_id_to_find)
luke
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.