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

MongoDB, tambahkan { field :value } baru di dokumen tersemat yang ada dengan notasi titik multi level?

Apa yang Anda coba lakukan tidak mungkin dilakukan mengingat skema Anda. Notasi titik bisa multi level tetapi jika ada lebih dari satu level yang merupakan array, maka tidak bisa lagi ditangani menggunakan operator posisi '$'.

Misalnya. Anda harus melakukan :

db.my_collection.update( 
    {'websites.blog_posts.url': 'http://www.example.com/01.html' },
    {'$set': {'websites.$.blog_posts.$.impressions': 549}},
     true );

Tetapi memiliki dua operator posisi dalam pembaruan tidak dimungkinkan karena MongoDB hanya dapat menentukan posisi elemen dalam larik pertama.

Satu-satunya pilihan Anda adalah mendesain ulang skema Anda untuk memiliki kumpulan situs web pengguna khusus (yang lebih baik untuk alasan lain juga dalam kasus ini).




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Atribut kreasi_waktu Mongoengine dalam Dokumen

  2. Indeks Senyawa Optimal untuk $exists :true (indeks jarang)

  3. mongoDB:$inc dari dokumen yang tidak ada dalam array

  4. MongoDB - perbarui sub dokumen menggunakan $set

  5. Perbarui mongodb array bersarang ganda