Para entender o que a documentação está dizendo, primeiro você precisa entender como funciona a consulta de intervalo com matriz.
Suponha que você tenha o seguinte documento em sua coleção:
{ "finished" : [ 27, 3 ] },
{ "finished" : 17 }
A primeira consulta:
db.users.find( { "finished": { "$elemMatch": { "$gt": 15, "$lt": 20 } } } )
Retornará apenas o documento onde "finished" for um array. Isso ocorre porque
$elemMatch
O operador corresponde apenas a documentos em que o campo é uma matriz e em que um único elemento atende a todos os critérios de consulta. Mas a segunda consulta:
db.users.find( { "finished": { "$gt": 15, "$lt": 20 } } )
retornará ambos os documentos, o que provavelmente não é o que você deseja como
27
é maior que 20
e 3
é menor que 15
. Isso ocorre porque 27
corresponde ao primeiro critério e 3
o segundo. Esse comportamento é o que é mencionado na documentação.
...um elemento pode satisfazer a condição maior que 15 e outro elemento pode satisfazer a condição menor que 20, ou um único elemento pode satisfazer ambos:
Conclusão:
As consultas de intervalo em matrizes corresponderão a um ou vários elementos na matriz que correspondam a todos os critérios de consulta.
Lição:
Não use consulta de intervalo com matrizes. Você obterá resultado inesperado.