Com índices compostos em que um dos campos indexados é uma matriz, o MongoDB usará apenas um limite inferior ou superior para a consulta de intervalo para garantir que as correspondências corretas sejam retornadas. Consulte SERVER-958 para um exemplo em que restringir os limites de índice superior e inferior não localizaria o documento esperado.
Se sua consulta de intervalo estiver no campo de matriz, você poderá usar o
$elemMatch
operador para otimizar sua consulta dentro dos limites de índice esperados. Como no MongoDB 2.4, o $elemMatch
O operador não funciona em campos que não são de matriz, portanto, infelizmente, isso não ajuda no seu caso de uso. Você pode assistir/votar SERVER-6050">SERVER-6050:considere permitir $elemMatch aplicado a não arrays
no rastreador de problemas do MongoDB. Há também um problema em aberto SERVER-7959:verificações potencialmente inesperadas com índices compostos quando alguns campos são multichave descrevendo esse comportamento.