sql >> Databasteknik >  >> NoSQL >> MongoDB

Fråga MongoDB med $and och Multiple $or

dokumentationen säger inte att detta är omöjligt. Det står bara

Den här frågan kan inte konstrueras med en implicit AND-operation, eftersom den använder operatorn $or mer än en gång.

detta betyder att detta kommer att fungera :

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

men det gör det inte, eftersom det är en implicit $and med två $or

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

prova det online:mongoplayground.net/p/gL_0gKzGA-u

Här är ett fungerande fall med en implicit $and :

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

Jag antar att problemet du står inför är att det inte finns något dokument som matchar din begäran i din samling




  1. Hur man ersätter befintliga dokument när man importerar en fil till MongoDB

  2. Lagring av dataström från POST-förfrågan i GridFS, express, mongoDB, node.js

  3. Redis publicera/prenumerera:se vilka kanaler som för närvarande prenumererar på

  4. MongoDB $summa och $avg av underdokument