Non puoi farlo in modo specifico, non puoi indicizzare sul valore della chiave.
Una soluzione
Tuttavia, puoi indicizzare gli elementi in un array.
Supponiamo che i tuoi dati assomiglino a questo:
items:
[
{ Key: "Name", Value: "Peter", Type:String },
{ Key: "Age", Value: "18", Type:int },
{ Key: "City", Value: "San Jose", Type:String },
...30 to 40 items.
]
Dovresti fare quanto segue per creare un indice su items.Key
:
db.foo.ensureIndex( { 'items.Key' } )
Quando fai quanto segue utilizzerai l'indice:
db.foo.find( { 'items.Key' : "City", 'items.value' : "San Jose" } )
Questo restringerà la ricerca solo agli elementi che hanno Key = "City"
. Se questo è tutto, probabilmente non sarà di aiuto.
Soluzione alternativa
Perché items
un array? Non puoi strutturare i dati in questo modo:
items:
{
"Name" : { Value: "Peter", Type:String },
"Age" : { Value: "18", Type:int },
"City" : { Value: "San Jose", Type:String },
...30 to 40 items.
}
Ora puoi indicizzare su items.City.Value
, che è quello che stavi cercando in primo luogo. Questo rende anche la struttura dei dati un po' più piccola.
A seconda della natura dei tuoi dati, potresti anche voler guardare indici sparsi per aiutarti a controllare la dimensione del tuo indice.