Con indici composti in cui uno dei campi indicizzati è un array, MongoDB utilizzerà solo un limite inferiore o superiore per la query dell'intervallo per garantire che vengano restituite corrispondenze corrette. Vedi SERVER-958 per un esempio in cui il vincolo ai limiti dell'indice superiore e inferiore non troverebbe il documento previsto.
Se la query sull'intervallo si trova nel campo dell'array, puoi potenzialmente utilizzare il $elemMatch
operatore per ottimizzare la query entro i limiti di indice previsti. Come in MongoDB 2.4, il $elemMatch
l'operatore non funziona su campi non array, quindi sfortunatamente questo non aiuta il tuo caso d'uso. Puoi guardare / votare SERVER-6050:considera di consentire $elemMatch applicato a non array
nel tracker dei problemi di MongoDB.
Esiste anche un problema aperto SERVER-7959:scansioni potenzialmente impreviste con indici composti quando alcuni campi sono multichiave descrivendo questo comportamento.