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

Forespørg MongoDB med $and og Multiple $or

dokumentationen siger ikke, at dette er umuligt. Der står kun

Denne forespørgsel kan ikke konstrueres ved hjælp af en implicit AND-operation, fordi den bruger $or-operatoren mere end én gang.

det betyder, at dette vil virke :

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

men det gør det ikke, fordi det er en implicit $and med to $or

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

prøv det online:mongoplayground.net/p/gL_0gKzGA-u

Her er en arbejdssag med en implicit $and :

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

Jeg gætter på, at problemet du står over for er, at der ikke er noget dokument, der matcher din anmodning i din samling




  1. Byg en reaktiv publikation med yderligere felter i hvert dokument

  2. Brug cases til updateOne over findOneAndUpdate i MongoDB

  3. Redis publish-subscribe:Er Redis garanteret at levere budskabet selv under massiv stress?

  4. MongoDB - Opret et forhold