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

'upsert' dalam dokumen yang disematkan

Anda dapat menggunakan $addToSet untuk menambahkan ke set dengan memastikan tidak ada elemen larik duplikat, tetapi itu tidak akan berfungsi untuk kasus "pembaruan" Anda.

Untuk melakukan apa yang Anda inginkan, Anda perlu mengubah struktur data Anda menjadi sesuatu seperti:

{
    "_id" : ObjectId("4f9519d6684c8b1c9e72e367"),
    "component_id" : 1,
    "_locales" : {
        "nl_NL" : {
            "url" : "dutch"
        }
    }
}

Sekarang Anda dapat melakukan pembaruan di lokal nl_NL hanya dengan:

db.components.update( { component_id: 1 }, { $set: { '_locales.nl_NL.url' : 'new url' } }, true );

Dan lokal baru juga akan berfungsi, seperti dengan:

db.components.update( { component_id: 1 }, { $set: { '_locales.en_US.url' : 'American' } }, true );

Anda mungkin ingin mempertimbangkan untuk menjadikan lokal sebagai bagian dari objek bersarang juga, seperti di:

{
    "_id" : ObjectId("4f9519d6684c8b1c9e72e367"),
    "component_id" : 1,
    "_locales" : {
        "nl_NL" : {
            "url" : "dutch"
            "locale" : "nl_NL"                 
        }
    }
}

Ini mempermudah pengambilan data dalam beberapa kasus.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. menangani @ dalam string koneksi mongodb

  2. MongoDB Temukan kinerja:indeks gabungan tunggal VS dua indeks bidang tunggal

  3. Kelas 'MongoClient' tidak ditemukan

  4. Membandingkan Kinerja MongoDB di Cloud Publik:AWS, Azure &DigitalOcean

  5. Menghubungkan ke database MongoDB