MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Interroger MongoDB avec $et et plusieurs $ou

la documentation ne dit pas que c'est impossible. Il dit seulement

Cette requête ne peut pas être construite à l'aide d'une opération AND implicite, car elle utilise l'opérateur $or plus d'une fois.

cela signifie que cela fonctionnera :

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

mais ce ne sera pas le cas, car il s'agit d'un implicite $and avec deux $or

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

essayez-le en ligne :mongoplayground.net/p/gL_0gKzGA-u

Voici un cas de travail avec un $and implicite :

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

Je suppose que le problème que vous rencontrez est qu'il n'y a pas de document correspondant à votre demande dans votre collection