MongoDB db.Sammlung.sparen Sie Objekt überschreiben, wenn die vorhandenen
In MongoDB verwenden, können Sie db.collection.save({_id:'abc'}, objectToSave)
zum durchführen einer upsert.
Definieren wir objectToSave wie unten
{_id:'abc', field1:1, field2:2};
In meiner Sammlung, ich habe bereits ein Dokument mit der gleichen _id-Wert wie folgt:
{_id:'abc', field3:3};
Den "speichern" - Funktion oben ersetzen Sie das vorhandene Dokument in der Sammlung zu
{_id:'abc', field1:1, field2:2};
Was ich will, ist die Ausführung eines $ - set-Vorgangs zu produzieren Dokument in der Sammlung, wie unten
{_id:'abc', field1:1, field2:2, field3:3};
Kann das erreicht werden, in der Funktion speichern oder muss ich schreiben separate update-Anweisungen?
Beachten Sie, dass objectToSave die Felder sind dynamisch. Die Sprache, die ich verwende, ist Node.JS.
Du musst angemeldet sein, um einen Kommentar abzugeben.
sollte das tun, was Sie wollen:
{_id:'abc',field1:1,field2:2}
und effizient, so dass, da ein index verwendet wird, der vorhanden sein mußDa Sie nicht angeben, welche Sprache Sie verwenden: in plain mongoDB, es gibt keine
save
Funktion. Die explizite Anforderung zur Verbindung von neuen und permanenten Versionen von Entitäten ist ziemlich ungewöhnlich, also ja, ich würde davon ausgehen, dass Sie zum schreiben eines benutzerdefinierten Funktion.$set
und Sie sind gut zu gehen.db.test.update({_id:"efg"},{$set:{field1:1,field2:2}},{upsert:true})
führt zu der Schaffung von drummroll{ "_id" : "efg", "field1" : 1, "field2" : 2 }
. Aber ich denke, es ist einfacher, ein smarty Hose, als einfach versuchen die Ratschläge.