Ret sent til spillet her, men FWIW, MongoEngine har en indbygget løsning til dette.
Uanset om du vil create
eller update
du kan gøre følgende:
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()
Eneste forskel for update
er du nødt til at indsætte et id
. På den måde vil mongoengine ikke duplikere et dokument med et eksisterende id
og opdatere det i stedet.