Muito tarde para o jogo aqui, mas FWIW, MongoEngine tem uma solução para isso.
Independentemente se você deseja
create
ou update
você pode fazer o seguinte: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()
Única diferença para
update
é que você precisa ficar em um id
. Dessa forma, o mongoengine não duplicará um documento com um id
existente e atualizá-lo em vez disso.