Du kan ikke gøre dette specifikt, du kan ikke indeksere værdien af nøgle.
Én løsning
Du kan dog indeksere elementer i et array.
Lad os antage, at dine data ser sådan ud:
items:
[
{ Key: "Name", Value: "Peter", Type:String },
{ Key: "Age", Value: "18", Type:int },
{ Key: "City", Value: "San Jose", Type:String },
...30 to 40 items.
]
Du ville gøre følgende for at oprette et indeks på items.Key
:
db.foo.ensureIndex( { 'items.Key' } )
Når du gør følgende, vil du bruge indekset:
db.foo.find( { 'items.Key' : "City", 'items.value' : "San Jose" } )
Dette vil indsnævre søgningen til kun de elementer, der har Key = "City"
. Hvis dette er alt, så hjælper dette sandsynligvis ikke.
Alternativ løsning
Hvorfor er items
en række? Kan du ikke strukturere data sådan her:
items:
{
"Name" : { Value: "Peter", Type:String },
"Age" : { Value: "18", Type:int },
"City" : { Value: "San Jose", Type:String },
...30 to 40 items.
}
Nu kan du indeksere på items.City.Value
, hvilket er det, du ledte efter i første omgang. Dette gør også datastrukturen en del mindre.
Afhængigt af arten af dine data kan du også se på sparsomme indekser for at hjælpe med at kontrollere størrelsen af dit indeks.