Biorąc pod uwagę ten dokument zapisany w MongoDB
{
_id : ...,
some_key: {
param1 : "val1",
param2 : "val2",
param3 : "val3"
}
}
Obiekt z nowymi informacjami pochodzącymi ze świata zewnętrznego param2
i param3
ze świata zewnętrznego musi zostać uratowany
var new_info = {
param2 : "val2_new",
param3 : "val3_new"
};
Chcę scalić / nałożyć nowe pola na istniejący stan obiektu, aby parametr param1 nie został usunięty
Robiąc to
db.collection.update( { _id:...} , { $set: { some_key : new_info } }
Prowadzi do MongoDB robi dokładnie to, o co go proszono, i ustawia some_key na tę wartość. wymiana starego.
{
_id : ...,
some_key: {
param2 : "val2_new",
param3 : "val3_new"
}
}
Jaki jest sposób, aby MongoDB aktualizował tylko nowe pola (bez ich jawnego podawania jeden po drugim)? aby uzyskać to:
{
_id : ...,
some_key: {
param1 : "val1",
param2 : "val2_new",
param3 : "val3_new"
}
}
Używam klienta Java, ale każdy przykład będzie mile widziany