sql >> Databáze >  >> NoSQL >> MongoDB

Dotaz na MongoDB pomocí $and a Multiple $or

dokumentace neříká, že to není možné. Říká pouze

Tento dotaz nelze sestavit pomocí implicitní operace AND, protože používá operátor $or více než jednou.

to znamená, že to bude fungovat:

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

ale to nebude, protože je to implicitní $and se dvěma $or

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

zkuste to online:mongoplayground.net/p/gL_0gKzGA-u

Zde je funkční případ s implicitním $and :

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

Myslím, že problém, kterému čelíte, je ten, že ve vaší sbírce není žádný dokument odpovídající vašemu požadavku




  1. Připojování k Redis běžícímu v Docker Container z hostitelského počítače

  2. Agregace MongoDB s ovladačem Java

  3. Jak spustím Mongo DB z Windows?

  4. Nastavte klíč/hodnotu redis pomocí camel-redis