sql >> Database >  >> NoSQL >> MongoDB

MongoDB C# Array-index of indexering van innerlijke items van arrays

U kunt dit niet specifiek doen, u kunt niet indexeren op de waarde van de sleutel.

Eén oplossing

U kunt echter wel indexeren op items in een array.

Laten we aannemen dat uw gegevens er als volgt uitzien:

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

U zou het volgende doen om een ​​index te maken op items.Key :

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

Als u het volgende doet, gebruikt u de index:

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

Hierdoor wordt de zoekopdracht beperkt tot alleen die items met Key = "City" . Als dit alles is, zal dit waarschijnlijk niet helpen.

Alternatieve oplossing

Waarom is items een array? Kun je gegevens niet als volgt structureren:

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

Nu kunt u indexeren op items.City.Value , waar u in eerste instantie naar op zoek was. Dit maakt de datastructuur ook een stuk kleiner.

Afhankelijk van de aard van uw gegevens, wilt u misschien ook kijken naar sparse indexen om de grootte van uw index te helpen bepalen.



  1. Verbinding maken met MongoDB 3.0 met Java Spring

  2. Toegang tot redis lokaal op docker - docker compose

  3. Wat is de juiste manier om een ​​mongod-service op linux / OS X te starten?

  4. Hoe verwijder of verwijder je een collectie in MongoDB?