我正在使用pymongo驱动程序。据说,可以使用字符串来查询文档的_id字段,如下所示:
thing = db.things.find_one({'_id':'4ea113d6b684853c8e000001'})
但它不起作用。我做错了什么?
答案 0 :(得分:44)
应该是:
from pymongo.objectid import ObjectId
thing = db.things.find_one({'_id': ObjectId('4ea113d6b684853c8e000001') })
编辑:
目前的进口是:
from bson.objectid import ObjectId
答案 1 :(得分:27)
PyMongo改变了它的结构。不再从ObjectID
导入pymongo
,而是从bson
导入from bson.objectid import ObjectId
thing = db.things.find_one({'_id': ObjectId('4ea113d6b684853c8e000001')})
。现在应该是:
{{1}}
提醒一下,根据pypi/pymongo,请不要安装“bson”软件包。 PyMongo带有自己的bson包;执行“pip install bson”会安装与PyMongo不兼容的第三方软件包。
答案 2 :(得分:1)
要打印它:
import pymongo
from bson.objectid import ObjectId
print(db.things.find_one({'_id': ObjectId('4ea113d6b684853c8e000001')}))
如果您不想打印,请存储在其他变量中
答案 3 :(得分:0)
thing = db.things.find_one({'_id':ObjectId('4ea113d6b684853c8e000001')})
应该有效
答案 4 :(得分:0)
PyMongo文档似乎与当前版本不同步。 ObjectIds现在位于bson.objectid名称空间下。如果我没记错的话,从版本2.3开始就是这样。 使用bson.objectid import ObjectId。