MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoDB C# Array-Index oder Indizierung innerer Elemente von Arrays

Sie können dies nicht speziell tun, Sie können nicht auf den Wert des Schlüssels indexieren.

Eine Lösung

Sie können jedoch Elemente in einem Array indizieren.

Nehmen wir an, Ihre Daten sehen so aus:

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

Sie würden folgendermaßen vorgehen, um einen Index für items.Key zu erstellen :

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

Wenn Sie Folgendes tun, verwenden Sie den Index:

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

Dadurch wird die Suche auf nur die Elemente eingegrenzt, die Key = "City" haben . Wenn das alles ist, hilft das wahrscheinlich nicht weiter.

Alternative Lösung

Warum ist items eine Anordnung? Können Sie Daten nicht so strukturieren:

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

Jetzt können Sie auf items.City.Value indexieren , wonach Sie ursprünglich gesucht haben. Dadurch wird auch die Datenstruktur um einiges kleiner.

Je nach Art Ihrer Daten können Sie sich auch Sparse-Indizes ansehen um die Größe Ihres Index zu kontrollieren.