MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Заявете MongoDB с $and и Множество $or

документацията не казва, че това е невъзможно. Пише само

Тази заявка не може да бъде конструирана с помощта на имплицитна операция И, тъй като използва оператора $or повече от веднъж.

това означава, че това ще работи :

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

но това няма да стане, защото е неявно $and с две $or

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

опитайте го онлайн:mongoplayground.net/p/gL_0gKzGA-u

Ето работещ случай с имплицитно $and :

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

Предполагам, че проблемът, с който се сблъсквате, е, че във вашата колекция няма документ, съответстващ на заявката ви




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Заявка с низ формат на дата в mongodb

  2. Свържете се с конкретна база данни по подразбиране в mongodb

  3. Криптиране на MongoDB данни в покой

  4. Как да използвам MongoDB транзакция с Mongoose?

  5. Създайте текстов индекс с различни тегла на полета в MongoDB