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

Tentukan Beberapa Kriteria untuk Elemen Array

Untuk memahami apa yang dikatakan dokumentasi, Anda harus terlebih dahulu memahami cara kerja kueri rentang dengan larik.

Misalkan Anda memiliki dokumen berikut dalam koleksi Anda:

{ "finished" : [ 27, 3 ] },
{ "finished" : 17 }

Pertanyaan pertama:

db.users.find( { "finished": { "$elemMatch": { "$gt": 15, "$lt": 20 } } } )

Hanya akan mengembalikan dokumen di mana "selesai" adalah sebuah array. Ini karena $elemMatch operator hanya mencocokkan dokumen yang bidangnya berupa larik dan satu elemen memenuhi semua kriteria kueri.

Tapi pertanyaan kedua:

db.users.find( { "finished": { "$gt": 15, "$lt": 20 } } )

akan mengembalikan kedua dokumen yang mungkin bukan yang Anda inginkan sebagai 27 lebih besar dari 20 dan 3 kurang dari 15 . Ini karena 27 cocok dengan kriteria pertama dan 3 kedua. Perilaku inilah yang disebutkan dalam dokumentasi.

...satu elemen dapat memenuhi kondisi lebih besar dari 15 dan elemen lain dapat memenuhi kondisi kurang dari 20, atau satu elemen dapat memenuhi keduanya:

Kesimpulan:

Kueri rentang terhadap larik akan cocok sejauh satu atau beberapa elemen dalam larik yang cocok dengan semua kriteria kueri.

Pelajaran:

Jangan gunakan kueri rentang dengan array. Anda akan mendapatkan hasil yang tidak terduga.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana Anda menggunakan Mongoose tanpa mendefinisikan skema?

  2. Desain Skema MongoDB:Selalu Ada Skema

  3. Solusi MongoDB untuk dokumen di atas ukuran 16mb?

  4. java - pertunjukan MongoDB + Solr

  5. Pilih panjang string di mongodb