Wie aktualisiere ich ein Objekt in MongoDB teilweise, sodass das neue Objekt mit dem vorhandenen Objekt überlagert / zusammengeführt wird?
Angesichts dieses Dokuments in MongoDB gespeichert
<code>{ _id : ..., some_key: { param1 : "val1", param2 : "val2", param3 : "val3" } } </code>
Ein Objekt mit neuen Informationen zuparam2
undparam3
von der Außenwelt muss gerettet werden
<code>var new_info = { param2 : "val2_new", param3 : "val3_new" }; </code>
Ich möchte die neuen Felder über dem vorhandenen Zustand des Objekts zusammenführen / überlagern, damit param1 nicht entfernt wird
Dies tun
<code>db.collection.update( { _id:...} , { $set: { some_key : new_info } } </code>
Wird dazu führen, dass MongoDB genau das tut, was es verlangt hat, und some_key auf diesen Wert setzt. Ersetzen der alten.
<code>{ _id : ..., some_key: { param2 : "val2_new", param3 : "val3_new" } } </code>
Wie kann MongoDB nur neue Felder aktualisieren (ohne sie einzeln explizit anzugeben)? um dies zu bekommen:
<code>{ _id : ..., some_key: { param1 : "val1", param2 : "val2_new", param3 : "val3_new" } } </code>
Ich verwende den Java-Client, aber jedes Beispiel wird geschätzt