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

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

Apa yang tampaknya tidak Anda pahami di sini adalah bahwa $exists tidak dapat "mengambil" indeks dengan cara apa pun, meskipun jarang. Seperti yang dikatakan oleh dokumentasi itu sendiri:

Contoh yang diberikan di halaman tersebut adalah { "$exists": false } pertanyaan. Tetapi kondisi logika terbalik tidak membuat perbedaan apa pun di sini.

Untuk mendapatkan "manfaat penuh" dari indeks "jarang", Anda perlu mempertimbangkan "jenis" data yang disimpannya dan melakukan kueri dengan tepat.

Untuk numerik, seperti:

db.collection.find({ "a": "foobar", "b": { "$gte": -9999, "$lte": 9999 } })

Yang menggunakan indeks, dan yang jarang. Atau untuk berbasis teks:

db.collection.find({ "a": "foobar", "b": /.+/ })

Yang juga akan menggunakan indeks sparse dan hanya melihat di mana "b" didefinisikan.

Untuk "array" lalu "hati-hati". Karena nilai yang dilihat mungkin salah satu di atas kecuali Anda melakukan ini:

db.collection.insert({ "a": 1, "b": [[]] })

Di mana maka ini baik-baik saja:

db.ab.find({ "a": 1, "b": { "$type": 4 } })

Tetapi tidak benar-benar akan menggunakan indeks "jarang" untuk alasan yang sama $exists tidak akan berfungsi di sini.

Jadi, Anda perlu memahami apa arti istilah di sini, dan "meminta dengan tepat" untuk menggunakan definisi indeks yang Anda buat jika Anda mengharapkan kinerja yang maksimal.

Ini adalah contoh jelas yang dapat Anda uji sendiri dan lihat hasilnya benar. Saya berharap dokumentasi inti lebih jelas tentang poin-poin ini, tetapi saya juga sadar banyak yang telah mencoba berkontribusi (dan telah menghasilkan penjelasan yang sangat baik) tetapi tidak satu pun dari ini yang dimasukkan hingga saat ini.

Kira itu sebabnya Anda bertanya di sini.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana Anda terhubung ke replika dari shell MongoDB?

  2. Express.js dan durasi sesi connect-mongo

  3. Mempercepat agregasi MongoDB

  4. Menangani hubungan di meteor-angular

  5. Mengapa saya mendapatkan pengecualian InvalidDocument saat menyimpan objek ke MongoDB di Django untuk pertama kalinya?