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

Изберете документ, който има конкретна двойка ключ стойност, но няма друга двойка ключ стойност

Вашият опит за заявка използва един и същ „ключ“ два пъти. Не можете да направите това в обектна структура, тъй като по същество "преузнавате" стойността на същия ключ. Така че действително разглежданата заявка е само "второто" условие за този ключ.

Така че, ако искате да имате няколко условия за един и същ ключ, използвайте $and оператор:

db.collection.aggregate([
    { "$match": {
        "$and": [
            { "genericParams.key": { "$exists": true, "$ne": "manual_funds_processed" } },
            { "genericParams.key": "third_sms_email_time" }
        ] 
    },
    // other stages
})

Или тъй като всички условия на MongoDB наистина са аргументи "и" по подразбиране, можете също да посочите $eq в този случай:

db.collection.aggregate([
    { "$match": {
        "genericParams.key": { 
            "$ne": "manual_refund_processed", 
            "$eq": "third_sms_email_time"
        }
    }},
    // other stages
])

Отбелязвайки тук, че няма нищо специално за .aggregate() тук, тъй като това е само основната част от "заявката", която върши работата по избор на документ.

Също така имайте предвид, че при наличие на „положително“ условие ($eq ) всъщност не е необходимо да използвате $exists тъй като вече тествате, че поне този елемент трябва да съвпада.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да се присъедините към две колекции в mongo без търсене

  2. Шаблони за проектиране за слой за достъп до данни

  3. Как да направя заявка за отделни стойности в Mongoose, но да върна целия документ?

  4. Командата mongo не се разпознава при опит за свързване към сървър на mongodb

  5. Методът за намиране на Mongoose с $или условие не работи правилно