Nemůžete to udělat konkrétně, nemůžete indexovat hodnotu klíče.
Jedno řešení
Můžete však indexovat položky v poli.
Předpokládejme, že vaše data vypadají takto:
items:
[
{ Key: "Name", Value: "Peter", Type:String },
{ Key: "Age", Value: "18", Type:int },
{ Key: "City", Value: "San Jose", Type:String },
...30 to 40 items.
]
Chcete-li vytvořit index na items.Key
, postupujte takto :
db.foo.ensureIndex( { 'items.Key' } )
Když uděláte následující, použijete index:
db.foo.find( { 'items.Key' : "City", 'items.value' : "San Jose" } )
Tím se vyhledávání zúží pouze na položky, které mají Key = "City"
. Pokud je toto vše, pak to pravděpodobně nepomůže.
Alternativní řešení
Proč je items
pole? Nemůžete strukturovat data takto:
items:
{
"Name" : { Value: "Peter", Type:String },
"Age" : { Value: "18", Type:int },
"City" : { Value: "San Jose", Type:String },
...30 to 40 items.
}
Nyní můžete indexovat na items.City.Value
, což je to, co jste hledali na prvním místě. Díky tomu je také struktura dat o něco menší.
V závislosti na povaze vašich dat se můžete také podívat na řídké indexy pomoci řídit velikost vašeho indexu.