MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Indexando arrays paralelos no Mongodb


Antes de falar sobre possíveis soluções alternativas, gostaria apenas de destacar por que o MongoDB escolheu para impor essa restrição na indexação de matrizes paralelas. Quando você indexa um array no MongoDB, ele cria um índice multikey com uma chave por elemento do array. Portanto, se você criar um índice composto em duas matrizes, uma com M valores distintos e outra com N valores distintos, o índice terá essencialmente MN chaves. Isso é muito ruim - é não linear no número de elementos distintos da matriz. Considere a quantidade de trabalho necessária para manter um índice como este quando você adiciona ou remove elementos de matriz.

OK, justificativa à parte, para contornar essa restrição, será útil usar a versão atual do MongoDB (2.6), que suporta interseção de índice. Pode-se criar um índice em CustomerInformations e VehicleLicenseDisks e então o MongoDB pode usar ambos os índices e intersectá-los para servir consultas que tenham restrições em ambos.

Se você estiver, por qualquer motivo, preso ao MongoDB <2.6, suas opções são considerar redesenhar o esquema ou depender de índices que usam no máximo um dos campos da matriz.