使用 pymongo 在 mongodb 中按 ObjectId 搜索

问题描述 投票:0回答:2

我需要使用 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
python mongodb pymongo
2个回答
246
投票

我使用pymongo 2.4.1。

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

0
投票

假设每个文档都有一个唯一的

ObjectId
,我们可以直接使用
find_one
来搜索它。一个例子如下:

from bson import ObjectId
collection.find_one(ObjectId("6634fd508a186b81614c999f"))

请注意,与返回游标的

collection.find({})
不同(因此必须迭代才能获取实际文档),上面的调用返回 dict (如果有匹配)或 None (如果没有匹配)。

© www.soinside.com 2019 - 2024. All rights reserved.