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

MongoDB C# Array-indeks eller indeksering af indre elementer af arrays

Du kan ikke gøre dette specifikt, du kan ikke indeksere værdien af ​​nøgle.

Én løsning

Du kan dog indeksere elementer i et array.

Lad os antage, at dine data ser sådan ud:

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

Du ville gøre følgende for at oprette et indeks på items.Key :

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

Når du gør følgende, vil du bruge indekset:

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

Dette vil indsnævre søgningen til kun de elementer, der har Key = "City" . Hvis dette er alt, så hjælper dette sandsynligvis ikke.

Alternativ løsning

Hvorfor er items en række? Kan du ikke strukturere data sådan her:

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

Nu kan du indeksere på items.City.Value , hvilket er det, du ledte efter i første omgang. Dette gør også datastrukturen en del mindre.

Afhængigt af arten af ​​dine data kan du også se på sparsomme indekser for at hjælpe med at kontrollere størrelsen af ​​dit indeks.



  1. Installerer du PHP 7 MongoDB-klienten/driveren?

  2. Mongodb:flere samlinger eller en stor samling med indeks

  3. Hvordan henter man et undersæt af felter ved hjælp af C# MongoDB-driveren?

  4. MongoDB et til mange forhold