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

Parallele Arrays in Mongodb indizieren

Bevor ich über mögliche Problemumgehungen spreche, möchte ich nur hervorheben, warum sich MongoDB ausgewählt hat um diese Einschränkung beim Indizieren paralleler Arrays zu erzwingen. Wenn Sie ein Array in MongoDB indizieren, wird ein Multikey-Index mit einem Schlüssel pro Array-Element erstellt. Wenn Sie also einen zusammengesetzten Index für zwei Arrays erstellen, eines mit M unterschiedlichen Werten und eines mit N unterschiedlichen Werten, hat der Index im Wesentlichen MN Schlüssel. Das ist sehr schlecht - es ist nichtlinear in der Anzahl unterschiedlicher Array-Elemente. Berücksichtigen Sie den Arbeitsaufwand, der erforderlich ist, um einen solchen Index zu verwalten, wenn Sie Array-Elemente hinzufügen oder entfernen.

OK, Rechtfertigung beiseite, um diese Einschränkung zu umgehen, ist es hilfreich, die aktuelle MongoDB-Version (2.6) zu verwenden, die Indexüberschneidungen unterstützt. Man kann einen Index auf CustomerInformations erstellen und VehicleLicenseDisks und dann kann MongoDB beide Indizes verwenden und sie schneiden, um Abfragen zu bedienen, die Einschränkungen für beide haben.

Wenn Sie, aus welchen Gründen auch immer, bei MongoDB <2.6 feststecken, dann haben Sie die Wahl, entweder das Schema neu zu gestalten oder sich auf Indizes zu verlassen, die höchstens eines der Array-Felder verwenden.