2013-04-18 27 views
41

我需要用python使用pymongo搜索ObjectId,但是我總是得到這個錯誤。任何想法如何搜索?用pymongo在MongoDB中用ObjectId進行搜索

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 
+0

什麼是pymongo的版本? – Evgenii 2013-04-18 05:10:13

+0

我的版本是pymongo == 2.5 – 2013-04-18 13:27:59

回答

73

我使用pymongo 2.4.1。

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

現在可以工作,但使用pymongo 2.4.1也許是2.5錯誤 – 2013-04-18 13:35:17

+0

我更新pymongo爲2.5 - 所有工作。你能看到錯誤信息和你的代碼嗎? – Evgenii 2013-04-19 08:14:23

+0

@GerswinLee注意到「from bson.objectid」?您將在2.5版本中嘗試從pymongo導入它時會出現導入錯誤您需要python-bson軟件包。我不確定是否安裝了pymongo。 – incognick 2013-04-28 05:55:18