Sie können dies nicht speziell tun, Sie können nicht auf den Wert des Schlüssels indexieren.
Eine Lösung
Sie können jedoch Elemente in einem Array indizieren.
Nehmen wir an, Ihre Daten sehen so aus:
items:
[
{ Key: "Name", Value: "Peter", Type:String },
{ Key: "Age", Value: "18", Type:int },
{ Key: "City", Value: "San Jose", Type:String },
...30 to 40 items.
]
Sie würden folgendermaßen vorgehen, um einen Index für items.Key
zu erstellen :
db.foo.ensureIndex( { 'items.Key' } )
Wenn Sie Folgendes tun, verwenden Sie den Index:
db.foo.find( { 'items.Key' : "City", 'items.value' : "San Jose" } )
Dadurch wird die Suche auf nur die Elemente eingegrenzt, die Key = "City"
haben . Wenn das alles ist, hilft das wahrscheinlich nicht weiter.
Alternative Lösung
Warum ist items
eine Anordnung? Können Sie Daten nicht so strukturieren:
items:
{
"Name" : { Value: "Peter", Type:String },
"Age" : { Value: "18", Type:int },
"City" : { Value: "San Jose", Type:String },
...30 to 40 items.
}
Jetzt können Sie auf items.City.Value
indexieren , wonach Sie ursprünglich gesucht haben. Dadurch wird auch die Datenstruktur um einiges kleiner.
Je nach Art Ihrer Daten können Sie sich auch Sparse-Indizes ansehen um die Größe Ihres Index zu kontrollieren.