使用 pymongo 在 mongodb 中按 ObjectId 进行搜索

113

我需要使用pymongo在python中搜索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

1
pymongo的版本是多少? - Evgenii
我的版本是pymongo==2.5。 - Gerswin Lee
1个回答

240

我使用的是 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版本,一切正常。你能看到错误信息和你的代码吗? - Evgenii
@GerswinLee 注意 "from bson.objectid" 这一行代码。在 pymongo 2.5 版本中,如果你尝试从 pymongo 中导入它,你会遇到一个导入错误。你需要安装 python-bson 包。我不确定它是否与 pymongo 一起安装。 - hyprnick
为了让它起作用,我必须将 obj_id_to_find 转换为字符串,即 str(obj_id_to_find) - luke

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接