У меня есть следующий Mongoengine документ:Как Mongoengine решает, являются ли 2 EmbeddedDocuments равными или нет?
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 равны или нет?
Спасибо!
я вижу. Спасибо за объяснение. Тогда я действительно жду 0.8 ...: D – Clara