sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB C# Array indexerar eller indexerar inre objekt av arrayer

Du kan inte göra detta specifikt, du kan inte indexera på nyckelns värde.

En lösning

Du kan dock indexera objekt i en array.

Låt oss anta att din data ser ut så här:

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 skulle göra följande för att skapa ett index på items.Key :

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

När du gör följande kommer du att använda indexet:

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

Detta kommer att begränsa sökningen till endast de objekt som har Key = "City" . Om detta är allt, så hjälper det förmodligen inte.

Alternativ lösning

Varför är items en array? Kan du inte strukturera data så här:

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

Nu kan du indexera på items.City.Value , vilket är vad du letade efter från början. Detta gör också datastrukturen en hel del mindre.

Beroende på typen av dina data kanske du också vill titta på glesa index för att hjälpa dig att kontrollera storleken på ditt index.



  1. Hur man tillämpar "ELLER"-villkor i kommandot redis keys

  2. MongoDB-datum i tidszon

  3. Mongoose (node.js-modul) orsakar hög CPU-användning

  4. Arkitektur för mycket dataloggning, DB eller fil?