U kunt dit niet specifiek doen, u kunt niet indexeren op de waarde van de sleutel.
Eén oplossing
U kunt echter wel indexeren op items in een array.
Laten we aannemen dat uw gegevens er als volgt uitzien:
items:
[
{ Key: "Name", Value: "Peter", Type:String },
{ Key: "Age", Value: "18", Type:int },
{ Key: "City", Value: "San Jose", Type:String },
...30 to 40 items.
]
U zou het volgende doen om een index te maken op items.Key
:
db.foo.ensureIndex( { 'items.Key' } )
Als u het volgende doet, gebruikt u de index:
db.foo.find( { 'items.Key' : "City", 'items.value' : "San Jose" } )
Hierdoor wordt de zoekopdracht beperkt tot alleen die items met Key = "City"
. Als dit alles is, zal dit waarschijnlijk niet helpen.
Alternatieve oplossing
Waarom is items
een array? Kun je gegevens niet als volgt structureren:
items:
{
"Name" : { Value: "Peter", Type:String },
"Age" : { Value: "18", Type:int },
"City" : { Value: "San Jose", Type:String },
...30 to 40 items.
}
Nu kunt u indexeren op items.City.Value
, waar u in eerste instantie naar op zoek was. Dit maakt de datastructuur ook een stuk kleiner.
Afhankelijk van de aard van uw gegevens, wilt u misschien ook kijken naar sparse indexen om de grootte van uw index te helpen bepalen.