sql >> Databasteknik >  >> NoSQL >> MongoDB

Indexering av parallella arrayer i Mongodb

Innan jag pratar om möjliga lösningar vill jag bara belysa varför MongoDB har valt för att upprätthålla denna begränsning för indexering av parallella arrayer. När du indexerar en array i MongoDB skapar den ett multikey-index med en nyckel per array-element. Därför, om du skapar ett sammansatt index på två arrayer, en med M distinkta värden och en med N distinkta värden, har indexet i huvudsak MN-nycklar. Detta är mycket dåligt - det är olinjärt i antalet distinkta arrayelement. Tänk på hur mycket arbete det tar att upprätthålla ett sådant här index när du lägger till eller tar bort arrayelement.

OK, förklaringen åsido, för att kringgå denna begränsning kommer det att vara bra att använda den nuvarande MongoDB-versionen (2.6), som stöder index intersection. Man kan skapa ett index på CustomerInformations och VehicleLicenseDisks och sedan kan MongoDB använda båda indexen och skära dem för att betjäna frågor som har begränsningar för båda.

Om du, av någon anledning, har fastnat för MongoDB <2.6, är dina alternativ antingen att överväga att göra om schemat eller att vara beroende av index som använder högst ett av arrayfälten.



  1. Hur utför man addToSet med Go officiella drivrutin?

  2. Projektera ett element som returneras med $arrayElemAt

  3. Mongo C#-drivrutin:Deserialisera BsonValue

  4. Använda MongoDB C#-drivrutinen:Wrapped eller Un-Wrapped?