Mengingat dokumen ini disimpan di MongoDB
{
_id : ...,
some_key: {
param1 : "val1",
param2 : "val2",
param3 : "val3"
}
}
Objek dengan informasi baru tentang param2
dan param3
dari dunia luar perlu diselamatkan
var new_info = {
param2 : "val2_new",
param3 : "val3_new"
};
Saya ingin menggabungkan / overlay bidang baru di atas keadaan objek yang ada sehingga param1 tidak dihapus
Melakukan ini
db.collection.update( { _id:...} , { $set: { some_key : new_info } }
Akan mengarah ke MongoDB melakukan persis seperti yang diminta, dan menetapkan some_key ke nilai itu. mengganti yang lama.
{
_id : ...,
some_key: {
param2 : "val2_new",
param3 : "val3_new"
}
}
Apa cara agar MongoDB hanya memperbarui bidang baru (tanpa menyatakannya satu per satu secara eksplisit)? untuk mendapatkan ini:
{
_id : ...,
some_key: {
param1 : "val1",
param2 : "val2_new",
param3 : "val3_new"
}
}
Saya menggunakan klien Java, tetapi contoh apa pun akan dihargai