Доста късно за играта тук, но FWIW, MongoEngine има вградено решение за това.
Независимо дали искате да create
или update
можете да направите следното:
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()
Единствената разлика за update
трябва да въведете id
. По този начин mongoengine няма да дублира документ със съществуващ id
и го актуализирайте вместо това.