【问题标题】:How to search document by oid in mongoengine如何在mongoengine中按oid搜索文档
【发布时间】:2012-04-03 06:45:33
【问题描述】:
我需要通过 oid 从 db 中获取文档,例如:
Docs.objects(_id='4f4381f4e779897a2c000009')
但是怎么做,如果 _id 需要 ObjectId 对象,即使我尝试从 pymongo 设置 ObjectId 也不起作用。
Docs.objects(_id=pymongo.objectid.ObjectId('4f4381f4e779897a2c000009'))
返回空列表
【问题讨论】:
标签:
python
mongodb
mongoengine
【解决方案1】:
这应该可行:
Docs.objects(pk='4f4381f4e779897a2c000009')
【解决方案2】:
只使用原始字符串怎么样:
Docs.objects.get(id='4f4381f4e779897a2c000009')
这可能是最简单的方法……对吧?
【解决方案3】:
提出这个问题是因为我自己在这方面遇到了很多麻烦。看起来 PyMongo changed this 和 objectid 不再在 pymongo 内部,而是现在:
import bson
Doc.objects.get(id=bson.objectid.ObjectId('4f4381f4e779897a2c000009'))
此外,Mongoengine 使用名称“id”作为 ObjectID 字段。
【解决方案4】:
这个帖子很旧,但如果有人在 2022 年左右看到它:
这适用于 MongoDB Atlas + Mongoengine == 0.23.1
from bson.objectid import ObjectId
Doc.objects(_id=ObjectId("85a2c854002c893dd7756b5g"))