MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Indice MongoDB C# Array o indicizzazione di elementi interni di array

Non puoi farlo in modo specifico, non puoi indicizzare sul valore della chiave.

Una soluzione

Tuttavia, puoi indicizzare gli elementi in un array.

Supponiamo che i tuoi dati assomiglino a questo:

items:
  [
       { Key: "Name", Value: "Peter", Type:String },
       { Key: "Age", Value: "18", Type:int },
       { Key: "City", Value: "San Jose", Type:String },
       ...30 to 40 items.
  ]

Dovresti fare quanto segue per creare un indice su items.Key :

 db.foo.ensureIndex( { 'items.Key' } )

Quando fai quanto segue utilizzerai l'indice:

 db.foo.find( { 'items.Key' : "City", 'items.value' : "San Jose" } )

Questo restringerà la ricerca solo agli elementi che hanno Key = "City" . Se questo è tutto, probabilmente non sarà di aiuto.

Soluzione alternativa

Perché items un array? Non puoi strutturare i dati in questo modo:

items:
  {
       "Name" : { Value: "Peter", Type:String },
       "Age" : { Value: "18", Type:int },
       "City" : { Value: "San Jose", Type:String },
       ...30 to 40 items.
  }

Ora puoi indicizzare su items.City.Value , che è quello che stavi cercando in primo luogo. Questo rende anche la struttura dei dati un po' più piccola.

A seconda della natura dei tuoi dati, potresti anche voler guardare indici sparsi per aiutarti a controllare la dimensione del tuo indice.