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

Mongo Pertanyaan kueri $gt,$lt

Ini adalah topik yang benar-benar membingungkan. Saya bekerja di 10gen dan saya harus menghabiskan waktu untuk membungkus kepala saya di sekitarnya;)

Mari kita telusuri bagaimana mesin kueri memproses kueri ini.

Ini pertanyaannya lagi:

> db.test.find({ b : { $gt :  4, $lt : 6}});

Ketika sampai pada rekor yang sepertinya tidak cocok...

{ "_id" : ObjectId("4d54cff54364000000004331"), "a" : 1, "b" : [ 2, 4, 6, 8 ] }

Pencocokan tidak dilakukan terhadap setiap elemen array, melainkan terhadap array secara keseluruhan.

Perbandingan dilakukan dalam tiga langkah:

Langkah 1 :Temukan semua dokumen di mana b memiliki nilai lebih besar dari 4

b:[2,4,6,8] cocok karena 6 &8 lebih besar dari 4

Langkah 2 :Temukan semua dokumen di mana b memiliki nilai kurang dari 6

b:[2,4,6,8] cocok karena 2 &4 kurang dari 6

Langkah 3 :Temukan kumpulan dokumen yang cocok dengan langkah 1 &2.

Dokumen dengan b:[2,4,6,8] cocok dengan langkah 1 &2 sehingga dikembalikan sebagai kecocokan. Perhatikan bahwa hasil juga tidak diduplikasi dalam langkah ini, sehingga dokumen yang sama tidak akan dikembalikan dua kali.

Jika Anda ingin kueri diterapkan ke elemen individual larik, bukan larik secara keseluruhan, Anda bisa menggunakan operator $elemMatch. Misalnya

> db.temp.find({b: {$elemMatch: {$gt: 4, $lt: 5}}})
> db.temp.find({b: {$elemMatch: {$gte: 4, $lt: 5}}})
  { "_id" : ObjectId("4d558b6f4f0b1e2141b66660"), "b" : [ 2, 3, 4, 5, 6 ] }


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Berapa ukuran maksimal operasi batch MongoDB?

  2. Kiat Perencanaan Skema MongoDB

  3. Kapan ke Redis? Kapan ke MongoDB?

  4. Cara Mengoptimalkan Kinerja MongoDB

  5. Bagaimana cara menghapus dokumen menggunakan Node.js Mongoose?