MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Indexation de tableaux parallèles dans Mongodb

Avant de parler des solutions de contournement possibles, je veux juste souligner pourquoi MongoDB a choisi pour appliquer cette restriction sur l'indexation des tableaux parallèles. Lorsque vous indexez un tableau dans MongoDB, il crée un index multiclé avec une clé par élément de tableau. Par conséquent, si vous créez un index composé sur deux tableaux, l'un avec M valeurs distinctes et l'autre avec N valeurs distinctes, l'index a essentiellement MN clés. C'est très mauvais - c'est non linéaire dans le nombre d'éléments de tableau distincts. Tenez compte de la quantité de travail nécessaire pour maintenir un index comme celui-ci lorsque vous ajoutez ou supprimez des éléments de tableau.

OK, justification mise à part, pour contourner cette restriction, il sera utile d'utiliser la version actuelle de MongoDB (2.6), qui prend en charge l'intersection d'index. On peut créer un index sur CustomerInformations et VehicleLicenseDisks puis MongoDB peut utiliser les deux index et les croiser pour répondre aux requêtes qui ont des restrictions sur les deux.

Si, pour une raison quelconque, vous êtes bloqué avec MongoDB <2.6, vos options sont soit d'envisager de reconcevoir le schéma, soit de dépendre d'index qui utilisent au plus un des champs du tableau.