Trò chơi ở đây khá muộn, nhưng FWIW, MongoEngine có một giải pháp xây dựng cho điều này.
Bất kể bạn có muốn create
hay không hoặc update
bạn có thể làm như sau:
class Pets(EmbeddedDocument):
name = StringField()
class Person(Document):
name = StringField()
address = StringField()
pets = ListField(EmbeddedDocumentField(Pets))
p = Person(**{
"name": "Hank",
"address": "Far away",
"pets": [{"name": "Scooter"}]
})
p.save()
Chỉ khác biệt đối với update
bạn có cần nhập id
không . Bằng cách đó mongoengine sẽ không sao chép tài liệu với id
hiện có và cập nhật nó thay thế.