Cukup terlambat untuk permainan di sini, tetapi FWIW, MongoEngine memiliki solusi bawaan untuk ini.
Terlepas dari apakah Anda ingin create
atau update
Anda dapat melakukan hal berikut:
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()
Hanya perbedaan untuk update
apakah Anda harus tetap menggunakan id
. Dengan begitu mongoengine tidak akan menduplikasi dokumen dengan id
yang ada dan perbarui sebagai gantinya.