MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Interroga MongoDB con $e e Multiple $or

la documentazione non dice che questo è impossibile. Dice solo

Questa query non può essere costruita utilizzando un'operazione AND implicita, perché utilizza l'operatore $or più di una volta.

questo significa che funzionerà :

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

ma non sarà così, perché è un implicito $and con due $or

db.inventory.find({
        { $or : [ { price : 0.99 }, { price : 1.99 } ] },
        { $or : [ { sale : true }, { qty : { $lt : 20 } } ] }
})

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

Ecco un caso funzionante con un implicito $and :

db.inventory.find({ price: { $ne: 1.99, $exists: true } })

Immagino che il problema che stai affrontando sia che non ci sono documenti corrispondenti alla tua richiesta nella tua raccolta