Tentu saja karena inilah yang Anda minta untuk dilakukan. Terlepas dari judul Anda, tidak ada gunanya "notasi titik" di sini sama sekali. Ini tentu saja yang ingin Anda lakukan jika Anda berniat untuk tidak menimpa properti yang ada. Saat ini Anda baru saja mengganti seluruh objek, meskipun Anda menggunakan $set
di mana kecuali Anda mengubah struktur di sini pada dasarnya berlebihan.
Untuk "memperbaiki" ini, Anda perlu memanipulasi data
objek terlebih dahulu. Dengan sesuatu seperti ini:
var newobj = {};
Object.keys( data ).forEach(function(key) {
if ( typeof(data[key]) == "object" ) {
Object.keys( data[key] ).forEach(function(subkey) {
newobj[key + "." + subkey] = data[key][subkey];
});
} else {
newobj[key] = data[key];
}
});
Itu memberi Anda dan output di newobj
struktur seperti ini:
{
"postcode" : "BV123456789BY",
"status.last_check" : 1413539153572,
"status.code" : "06",
"status.postnum" : "247431",
"status.date" : ISODate("2014-10-17T11:28:20.540Z"),
"status.text" : "06. Поступило в участок обработки почты (247431) Светлогорск - 1"
}
Maka tentu saja Anda dapat melanjutkan dengan pembaruan normal dan memperbaiki semuanya:
Order.update({ "postcode": newobj.postcode}, { "$set": newobj }, function (err) {
if (err) console.log(err);
});
Tentu saja Anda memerlukan beberapa rekursi untuk struktur yang lebih bersarang, tetapi ini akan memberi Anda gambaran umum. Notasi titik adalah caranya, tetapi Anda harus benar-benar menggunakannya.