我有以下 Mongoengine 文档:
class MyEmbed(EmbeddedDocument):
embedField = StringField(primary_key=True)
varField = StringField()
class TestDoc(Document):
myField = StringField()
embed_list = ListField(EmbeddedDocumentField(MyEmbed))
所以我保留了一个嵌入文档的列表,如果它们不存在,我希望添加新文档。问题是,当我使用原子更新运算符add_to_set时,事情并没有按照我想要的方式进行。这就是我想要做的:
embed1 = models.MyEmbed(embedField="F1")
parent = models.TestDoc(myField="ParentField")
embed_list = []
embed_list.append(embed1)
parent.embed_list = embed_list
parent.save()
embed2 = models.MyEmbed(embedField="F1", varField="varField")
TestDoc.objects(id=parent.id).update_one(add_to_set__embed_list=embed2)
问题是这样做之后,我在数据库中有一个包含 2 个元素的嵌入文档列表。我想要的是决定一个字段(在这种情况下为 embedField) 2 EmbeddedDocuments 是否相等,而不是考虑所有属性。我的问题是:
- Mongoengine 决定 2 个 EmbeddedDocuments 是否相等的默认标准是什么?
- 如何重新定义使 Mongoengine 决定 2 个 EmbeddedDocuments 何时相等的函数?
谢谢!