MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Consultar o MongoDB com $and e vários $or


a documentação não diz que isso é impossível. Só diz

Essa consulta não pode ser construída usando uma operação AND implícita, porque usa o operador $or mais de uma vez.

isso significa que isso funcionará:
db.inventory.find( {
    $and : [
        { $or : [ { price : 0.99 }, { price : 1.99 } ] },
        { $or : [ { sale : true }, { qty : { $lt : 20 } } ] }
    ]
} )

mas isso não vai, porque é um implícito $and com dois $or
db.inventory.find({
        { $or : [ { price : 0.99 }, { price : 1.99 } ] },
        { $or : [ { sale : true }, { qty : { $lt : 20 } } ] }
})

experimente online:mongoplayground.net/p/gL_0gKzGA-u

Aqui está um caso de trabalho com um $and implícito :
db.inventory.find({ price: { $ne: 1.99, $exists: true } })

Acho que o problema que você está enfrentando é que não há nenhum documento que corresponda à sua solicitação em sua coleção