Anda tidak dapat melakukan ini secara khusus, Anda tidak dapat mengindeks nilai kunci.
Satu Solusi
Namun, Anda dapat mengindeks item dalam array.
Mari kita asumsikan bahwa data Anda terlihat seperti ini:
items:
[
{ Key: "Name", Value: "Peter", Type:String },
{ Key: "Age", Value: "18", Type:int },
{ Key: "City", Value: "San Jose", Type:String },
...30 to 40 items.
]
Anda akan melakukan hal berikut untuk membuat indeks pada items.Key
:
db.foo.ensureIndex( { 'items.Key' } )
Ketika Anda melakukan hal berikut, Anda akan menggunakan indeks:
db.foo.find( { 'items.Key' : "City", 'items.value' : "San Jose" } )
Ini akan mempersempit pencarian hanya untuk item yang memiliki Key = "City"
. Jika ini segalanya, maka ini mungkin tidak akan membantu.
Solusi alternatif
Mengapa items
sebuah array? Bisakah Anda tidak menyusun data seperti ini:
items:
{
"Name" : { Value: "Peter", Type:String },
"Age" : { Value: "18", Type:int },
"City" : { Value: "San Jose", Type:String },
...30 to 40 items.
}
Sekarang Anda dapat mengindeks di items.City.Value
, itulah yang Anda cari sejak awal. Ini juga membuat struktur data sedikit lebih kecil.
Bergantung pada sifat data Anda, Anda mungkin juga ingin melihat indeks jarang untuk membantu mengontrol ukuran indeks Anda.