sql >> Database >  >> NoSQL >> MongoDB

Parallelle arrays indexeren in Mongodb

Voordat ik het heb over mogelijke oplossingen, wil ik alleen benadrukken waarom MongoDB heeft gekozen om deze beperking af te dwingen bij het indexeren van parallelle arrays. Wanneer u een array indexeert in MongoDB, wordt een multikey-index gemaakt met één sleutel per array-element. Als u dus een samengestelde index maakt op twee arrays, één met M verschillende waarden en één met N verschillende waarden, heeft de index in wezen MN-sleutels. Dit is erg slecht - het is niet-lineair in het aantal verschillende array-elementen. Houd rekening met de hoeveelheid werk die het kost om een ​​index als deze te onderhouden wanneer u array-elementen toevoegt of verwijdert.

OK, rechtvaardiging terzijde, om deze beperking te omzeilen, is het handig om de huidige MongoDB-versie (2.6) te gebruiken, die indexkruising ondersteunt. Men kan een index maken op CustomerInformations en VehicleLicenseDisks en dan kan MongoDB beide indices gebruiken en ze kruisen om query's weer te geven die voor beide beperkingen hebben.

Als je, om wat voor reden dan ook, vastzit aan MongoDB <2.6, dan heb je de keuze om ofwel te overwegen het schema opnieuw te ontwerpen of afhankelijk te zijn van indexen die maximaal één van de arrayvelden gebruiken.



  1. Hoe weet ik of sidekiq is verbonden met de redis-server?

  2. 3 manieren om een ​​index in MongoDB te plaatsen

  3. nextjs importeert maar roept geen functie op Module niet gevonden:Fout:kan 'dns' niet oplossen

  4. Vermijd dubbele vermeldingen op Mongoose-array