次の 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)
問題は、これを行った後、DB に 2 つの要素を持つ埋め込みドキュメントのリストがあることです。そして、私が望むのは、すべてのプロパティを考慮に入れるのではなく、2 つの EmbeddedDocuments が等しいかどうかを 1 つのフィールド (この場合はembedField) で決定することです。私の質問は次のとおりです。
- 2つのEmbeddedDocumentsが等しいかどうかをMongoengineが判断するデフォルトの基準は何ですか?
- 2 つの EmbeddedDocuments が等しいかどうかを Mongoengine に判断させる関数を再定義するにはどうすればよいですか?
ありがとう!