Assez tard dans le jeu ici, mais FWIW, MongoEngine a une solution intégrée pour cela.
Peu importe si vous voulez create
ou update
vous pouvez faire ce qui suit :
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()
Seule différence pour update
est-ce que vous devez coller un id
. De cette façon, mongoengine ne dupliquera pas un document avec un id
existant et mettez-le à jour à la place.