使用Python使用字符串查询MongoDB for _id的正确方法是什么?

MFB*_*MFB 27 mongodb pymongo

我正在使用pymongo驱动程序.据说,可以使用字符串来查询文档的_id字段,如下所示:

thing = db.things.find_one({'_id':'4ea113d6b684853c8e000001'})
Run Code Online (Sandbox Code Playgroud)

但它不起作用.我究竟做错了什么?

Dhr*_*hak 48

它应该是 :

from pymongo.objectid import ObjectId   
thing = db.things.find_one({'_id': ObjectId('4ea113d6b684853c8e000001') })
Run Code Online (Sandbox Code Playgroud)

编辑:当前导入是: from bson.objectid import ObjectId


Sea*_*ean 31

PyMongo改变了它的结构.ObjectID不再从中导入pymongo,而是从中导入bson.现在应该是:

from bson.objectid import ObjectId
thing = db.things.find_one({'_id': ObjectId('4ea113d6b684853c8e000001')})
Run Code Online (Sandbox Code Playgroud)

提醒一下,根据pypi/pymongo,不要安装"bson"包.PyMongo带有自己的bson包; 执行"pip install bson"会安装与PyMongo不兼容的第三方软件包.