MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Aggiornare un documento MongoEngine usando un dict python?

Abbastanza tardi per il gioco qui, ma FWIW, MongoEngine ha una soluzione integrata per questo.

Indipendentemente dal fatto che tu voglia create o update puoi fare quanto segue:

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()

Unica differenza per update è necessario inserire un id . In questo modo mongoengine non duplicherà un documento con un id esistente e aggiornalo invece.