Ответ 1
Это должно быть:
from pymongo.objectid import ObjectId
thing = db.things.find_one({'_id': ObjectId('4ea113d6b684853c8e000001') })
EDIT:
Текущий импорт:
from bson.objectid import ObjectId
Я использую драйвер pymongo. Предположительно, можно использовать строку для запроса поля _id документа, например:
thing = db.things.find_one({'_id':'4ea113d6b684853c8e000001'})
Но это не сработает. Что я делаю неправильно?
Это должно быть:
from pymongo.objectid import ObjectId
thing = db.things.find_one({'_id': ObjectId('4ea113d6b684853c8e000001') })
EDIT:
Текущий импорт:
from bson.objectid import ObjectId
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.
Для печати:
import pymongo
from bson.objectid import ObjectId
print(db.things.find_one({'_id': ObjectId('4ea113d6b684853c8e000001')}))
если вы не хотите печатать, хранить в другой переменной
thing = db.things.find_one({'_id':ObjectId('4ea113d6b684853c8e000001')})
должен работать
Документация PyMongo, похоже, не синхронизирована с текущей версией. ObjectIds теперь находятся в пространстве имен bson.objectid. Если я правильно помню, это было так, начиная с версии 2.3. Используйте из bson.objectid import ObjectId.