MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Indicizzazione di array paralleli in Mongodb

Prima di parlare di possibili soluzioni alternative, voglio solo evidenziare perché MongoDB ha scelto per imporre questa restrizione all'indicizzazione di array paralleli. Quando si indicizza un array in MongoDB, viene creato un indice multichiave con una chiave per elemento dell'array. Pertanto, se crei un indice composto su due array, uno con M valori distinti e uno con N valori distinti, l'indice ha essenzialmente chiavi MN. Questo è pessimo:non è lineare nel numero di elementi distinti dell'array. Considera la quantità di lavoro necessaria per mantenere un indice come questo quando aggiungi o rimuovi elementi dell'array.

OK, giustificazione a parte, per aggirare questa restrizione sarà utile utilizzare l'attuale versione MongoDB (2.6), che supporta l'intersezione degli indici. Si può creare un indice su CustomerInformations e VehicleLicenseDisks e quindi MongoDB può utilizzare entrambi gli indici e intersecarli per servire query che hanno restrizioni su entrambi.

Se, per qualsiasi motivo, sei bloccato con MongoDB <2.6, le tue opzioni sono prendere in considerazione la riprogettazione dello schema o dipendere da indici che utilizzano al massimo uno dei campi dell'array.