我需要通过 oid 从 db 获取文档,例如:
Docs.objects(_id='4f4381f4e779897a2c000009')
但是怎么做,如果 _id 需要 ObjectId 对象,即使我尝试从 pymongo 设置 ObjectId 它也不起作用。
Docs.objects(_id=pymongo.objectid.ObjectId('4f4381f4e779897a2c000009'))
返回空列表
我需要通过 oid 从 db 获取文档,例如:
Docs.objects(_id='4f4381f4e779897a2c000009')
但是怎么做,如果 _id 需要 ObjectId 对象,即使我尝试从 pymongo 设置 ObjectId 它也不起作用。
Docs.objects(_id=pymongo.objectid.ObjectId('4f4381f4e779897a2c000009'))
返回空列表
这应该有效:
Docs.objects(pk='4f4381f4e779897a2c000009')
只使用原始字符串怎么样:
Docs.objects.get(id='4f4381f4e779897a2c000009')
这可能是最简单的方法......对吧?
提出这个问题是因为我自己对此有很多麻烦。似乎 PyMongo改变了这一点,objectid 不再在 pymongo 内部,而是现在:
import bson
Doc.objects.get(id=bson.objectid.ObjectId('4f4381f4e779897a2c000009'))
此外,Mongoengine 使用名称“id”作为 ObjectID 字段。
这个线程很旧,但如果有人在 2022 年左右查看它:这适用于 MongoDB Atlas + Mongoengine == 0.23.1
from bson.objectid import ObjectId
Doc.objects(_id=ObjectId("85a2c854002c893dd7756b5g"))