【发布时间】:2011-12-12 08:36:53
【问题描述】:
我正在使用 pymongo 驱动程序。假设可以使用字符串查询文档的_id字段,如下所示:
thing = db.things.find_one({'_id':'4ea113d6b684853c8e000001'})
但它不起作用。我做错了什么?
【问题讨论】:
我正在使用 pymongo 驱动程序。假设可以使用字符串查询文档的_id字段,如下所示:
thing = db.things.find_one({'_id':'4ea113d6b684853c8e000001'})
但它不起作用。我做错了什么?
【问题讨论】:
要打印它:
import pymongo
from bson.objectid import ObjectId
print(db.things.find_one({'_id': ObjectId('4ea113d6b684853c8e000001')}))
如果您不想打印,请存储在其他变量中
【讨论】:
PyMongo 改变了它的结构。 ObjectID 不再从 pymongo 导入,而是从 bson 导入。现在应该是:
from bson.objectid import ObjectId
thing = db.things.find_one({'_id': ObjectId('4ea113d6b684853c8e000001')})
提醒一下,根据pypi/pymongo,不要安装“bson”包。 PyMongo 自带 bson 包;执行“pip install bson”会安装与 PyMongo 不兼容的第三方包。
PyMongo 文档似乎与当前版本不同步。 ObjectIds 现在位于 bson.objectid 命名空间下。如果我没记错的话,他们从 2.3 版开始就是这样。 使用 from bson.objectid import ObjectId。
【讨论】:
应该是:
from pymongo.objectid import ObjectId
thing = db.things.find_one({'_id': ObjectId('4ea113d6b684853c8e000001') })
编辑:
目前的进口是:
from bson.objectid import ObjectId
【讨论】:
thing = db.things.find_one({'_id':ObjectId('4ea113d6b684853c8e000001')}) 应该可以工作
【讨论】: