Creé un generador de consultas dinámicas para crear mis consultas deseadas en función de muchos factores, sin embargo, en casos raros actuó de manera extraña. Después de un día leyendo registros, encontré una situación que se puede simplificar así:
db.users.find({att: 'a', att: 'b'})Lo que espero es que mongodb use AND de forma predeterminada, por lo que el resultado de la consulta anterior debería ser una matriz vacía. Sin embargo, ¡no lo es! Pero cuando uso AND explícitamente, el resultado es una matriz vacía
db.users.find({$and: [{att: 'a'}, {att: 'b'}]})En javascript, las claves del objeto deben ser únicas; de lo contrario, el valor se reemplazará por el valor más reciente (también mongodb Shell se basa en js, por lo que sigue algunas reglas de js)
const t = {att: 'a', att: 'b'}; console.log(t);Entonces, en su caso, su consulta está actuando así:
db.users.find({att: 'b'})Debe manejar esta situación en su código si desea que el resultado esté vacío en la condición mencionada