Latest web development tutorials

MongoDB pengindeksan maju

Pertimbangkan dokumen berikut koleksi (pengguna):

{
   "address": {
      "city": "Los Angeles",
      "state": "California",
      "pincode": "123"
   },
   "tags": [
      "music",
      "cricket",
      "blogs"
   ],
   "name": "Tom Benzamin"
}

Dokumen di atas mengandung sub-dokumen, dan alamat array tag.


bidang array yang diindeks

Misalkan kita mengambil berbasis pengguna label, yang kami butuhkan untuk indeks tag array yang koleksi.

Membuat indeks dalam array, array kebutuhan untuk masing-masing bidang pada gilirannya diindeks. Jadi ketika kita membuat indeks untuk tag array, itu akan menyediakan musik, kriket, blog tiga nilai untuk mendirikan sebuah indeks yang terpisah.

Membuat indeks array, gunakan perintah berikut:

>db.users.ensureIndex({"tags":1})

Setelah membuat indeks, kita dapat mengambil koleksi tags bidang:

>db.users.find({tags:"cricket"})

Kami digunakan untuk memverifikasi penggunaan indeks, Anda dapat menggunakan menjelaskan perintah:

>db.users.find({tags:"cricket"}).explain()

Hasil dari perintah di atas akan menampilkan "kursor": "BtreeCursor tags_1", katanya indeks telah digunakan.


bidang sub-dokumen indeks

Misalkan kita perlu kota, negara, bidang pincode untuk mengambil dokumen, seperti bidang ini adalah bidang subdocument, jadi kita perlu pengindeksan subdocument.

Membuat indeks untuk tiga sub-bidang dokumen, perintahnya adalah sebagai berikut:

>db.users.ensureIndex({"address.city":1,"address.state":1,"address.pincode":1})

Setelah indeks dibuat, kita dapat menggunakan lapangan untuk mengambil data sub-dokumen:

>db.users.find({"address.city":"Los Angeles"})   

Ingat ekspresi query harus mengikuti urutan indeks tertentu. Jadi indeks dibuat di atas akan mendukung query berikut:

>db.users.find({"address.city":"Los Angeles","address.state":"California"}) 

Juga mendukung query berikut:

>db.users.find({"address.city":"LosAngeles","address.state":"California","address.pincode":"123"})