Muh*_*lik 2 mongodb pymongo mongoengine
我的文档具有一些EmbeddedDocumentList,每个EmbeddedDocument应该具有自动生成的ObjectId(如_id)字段,因为我将编写查询以使用此_id字段获取单个EmbeddedDocument。
如何达到?
基本上,您可以使用以下代码
from mongoengine import *
from bson.objectid import ObjectId
class MyEmbeddedDocument(EmbeddedDocument):
oid = ObjectIdField(required=True, default=ObjectId,
unique=True, primary_key=True)
...
class MyDocument(Document):
embedded_list = EmbeddedDocumentListField(MyEmbeddedDocument)
...
Run Code Online (Sandbox Code Playgroud)
让我们解释更多,
根据文档,您可以将ObjectIdField添加到模型中,但这不是必需的,并且primary_key然后应将此属性设置为True。另外,它不会为每个对象生成ObjectId,然后导入并将其默认设置为ObjectId。
最后一步有些棘手。如果需要说明,
bson.objectid.ObjectId是生成新的objectid的类。
此外,文档还说默认值是可以调用的,因此可以清楚地说明它是如何工作的。
另外,针对Embeddeddocument的_id名称也不是最佳命名方式,因为您将对带有下划线的EmbeddedDocument编写查询,并且'_id'名称还有一个下划线,如下所示
MyDocument.objects.get(notice___id)
Run Code Online (Sandbox Code Playgroud)
然后mongoengine抛出异常,因为'_id'名称再加上一个下划线。因此,您应该将name作为“ oid”作为objectId的简称,或者直接将name命名为“ id”或您想要的名称。
| 归档时间: |
|
| 查看次数: |
2188 次 |
| 最近记录: |