Você não pode fazer isso especificamente, você não pode indexar o valor da chave.
Uma solução
No entanto, você pode indexar itens em uma matriz.
Vamos supor que seus dados tenham esta aparência:
items:
[
{ Key: "Name", Value: "Peter", Type:String },
{ Key: "Age", Value: "18", Type:int },
{ Key: "City", Value: "San Jose", Type:String },
...30 to 40 items.
]
Você faria o seguinte para criar um índice em
items.Key
: db.foo.ensureIndex( { 'items.Key' } )
Ao fazer o seguinte, você usará o índice:
db.foo.find( { 'items.Key' : "City", 'items.value' : "San Jose" } )
Isso restringirá a pesquisa apenas aos itens que têm
Key = "City"
. Se isso é tudo, então isso provavelmente não vai ajudar. Solução alternativa
Por que
items
uma matriz? Você não pode estruturar dados assim:items:
{
"Name" : { Value: "Peter", Type:String },
"Age" : { Value: "18", Type:int },
"City" : { Value: "San Jose", Type:String },
...30 to 40 items.
}
Agora você pode indexar em
items.City.Value
, que é o que você estava procurando em primeiro lugar. Isso também torna a estrutura de dados um pouco menor. Dependendo da natureza de seus dados, você também pode consultar índices esparsos para ajudar a controlar o tamanho do seu índice.