Ganska sent till spelet här, men FWIW, MongoEngine har en inbyggd lösning för detta.
Oavsett om du vill create
eller update
du kan göra följande:
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()
Enda skillnaden för update
måste du ange ett id
. På så sätt kommer mongoengine inte att duplicera ett dokument med ett befintligt id
och uppdatera den istället.