Jak częściowo zaktualizować obiekt w MongoDB, aby nowy obiekt nałożył / scalił się z istniejącym

Biorąc pod uwagę ten dokument zapisany w MongoDB

<code>{
   _id : ...,
   some_key: { 
        param1 : "val1",
        param2 : "val2",
        param3 : "val3"
   }
}
</code>

Obiekt z nowymi informacjamiparam2 iparam3 ze świata zewnętrznego należy uratować

<code>var new_info = {
    param2 : "val2_new",
    param3 : "val3_new"
};
</code>

Chcę scalić / nałożyć nowe pola na istniejący stan obiektu, aby param1 nie został usunięty

Robiąc to

<code>db.collection.update(  { _id:...} , { $set: { some_key : new_info  } } 
</code>

Doprowadzi do tego, że MongoDB zrobi dokładnie to, o co został poproszony, i ustawia some_key na tę wartość. zastępując stary.

<code>{
   _id : ...,
   some_key: { 
      param2 : "val2_new",
      param3 : "val3_new"
   }
}
</code>

W jaki sposób MongoDB aktualizuje tylko nowe pola (bez jednoznacznego ich podawania)? aby to uzyskać:

<code>{
   _id : ...,
   some_key: { 
        param1 : "val1",
        param2 : "val2_new",
        param3 : "val3_new"
   }
}
</code>

Używam klienta Java, ale każdy przykład zostanie doceniony

questionAnswers(13)

yourAnswerToTheQuestion