Para comprender lo que dice la documentación, primero debe comprender cómo funciona la consulta de rango con matriz.
Suponga que tiene el siguiente documento en su colección:
{ "finished" : [ 27, 3 ] },
{ "finished" : 17 }
La primera consulta:
db.users.find( { "finished": { "$elemMatch": { "$gt": 15, "$lt": 20 } } } )
Solo devolverá el documento donde "terminado" es una matriz. Esto se debe a que $elemMatch
El operador solo coincide con documentos donde el campo es una matriz y donde un solo elemento satisface todos los criterios de consulta.
Pero la segunda consulta:
db.users.find( { "finished": { "$gt": 15, "$lt": 20 } } )
devolverá ambos documentos, lo que probablemente no sea lo que desea como 27
es mayor que 20
y 3
es menor que 15
. Esto se debe a que 27
coincide con el primer criterio y 3
el segundo. Este comportamiento es lo que se menciona en la documentación.
...un elemento puede satisfacer la condición mayor a 15 y otro elemento puede satisfacer la condición menor a 20, o un solo elemento puede satisfacer ambas:
Conclusión:
Las consultas de rango contra matrices coincidirán en la medida en que uno o varios elementos de la matriz coincidan con todos los criterios de consulta.
Lección:
No utilice la consulta de rango con matrices. Obtendrá un resultado inesperado.