MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Pembaruan bidang titik Mongodb

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.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Hentikan Replika Set MongoDB

  2. Bagaimana cara menormalkan/mengurangi data waktu di mongoDB?

  3. Mengimpor csv ke mongodb menggunakan kode PHP

  4. Berapa Kedalaman Maksimum Dokumen Tertanam yang Diizinkan di MongoDb?

  5. Melayani URL dinamis dengan express dan mongodb