MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Fragen Sie MongoDB mit $and und mehreren $or ab

Die Dokumentation sagt nicht, dass dies unmöglich ist. Da steht nur

Diese Abfrage kann nicht mit einer impliziten AND-Operation konstruiert werden, da sie den $or-Operator mehr als einmal verwendet.

das bedeutet, dass dies funktionieren wird:

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

aber das wird nicht, weil es ein implizites ist $and mit zwei $or

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

Probieren Sie es online aus:mongoplayground.net/p/gL_0gKzGA-u

Hier ist ein Arbeitsfall mit einem impliziten $and :

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

Ich schätze, das Problem, dem Sie gegenüberstehen, ist, dass es in Ihrer Sammlung kein Dokument gibt, das Ihrer Anfrage entspricht