MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Índice de matriz C# do MongoDB ou indexação de itens internos de matrizes


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.