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

Hapus entri array yang berisi array kosong

Tidak tahu apa yang Anda coba karena itu tidak termasuk dalam pertanyaan Anda, tetapi cara terbaik untuk memeriksa array kosong pada dasarnya adalah dengan melihat di mana 0 indeks tidak cocok dengan $exists :

Inventory.update(
    { "products.rates.0": { "$exists": false } },
    { 
        "$pull": {
            "products": { "rates.0": { "$exists": false } }
        }
    },
    { "multi": true },
    function(err,numAffected) {

    }
)

Bagian "permintaan" dari .update() pernyataan memastikan bahwa kami hanya mencoba menyentuh dokumen yang memiliki larik kosong di "products.rates" . Itu tidak diperlukan, tetapi itu menghindari pengujian kondisi pernyataan "pembaruan" berikut pada dokumen di mana kondisi itu tidak true untuk elemen array apa pun, dan dengan demikian membuat segalanya sedikit lebih cepat.

Bagian "pembaruan" yang sebenarnya berlaku $pull pada "products" array untuk menghapus salah satu item di mana "rates" adalah array kosong. Jadi "jalur" di dalam $pull sebenarnya melihat ke dalam "products" konten, jadi ini relatif terhadap itu dan bukan keseluruhan dokumen.

Tentu saja $pull akan menghapus semua elemen yang cocok dalam satu operasi. "multi" hanya diperlukan ketika Anda benar-benar ingin memperbarui lebih dari satu dokumen dengan pernyataan




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Dapatkan semua nama bidang dalam koleksi mongodb?

  2. Bagaimana saya bisa menjalankan perintah MongoDB dengan menanyakan koleksi $cmd khusus?

  3. Hitung skor dari bidang yang ada dengan kondisi

  4. Spark - Bagaimana cara membuat variabel yang berbeda untuk setiap konteks pelaksana?

  5. Bagaimana menemukan kesamaan di bidang dokumen MongoDB?