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

Използвайте $cond в рамките на $match в агрегирането на mongoDB

Просто трябва малко да преформулирате логиката.

{ $match: { $expr: {
    $or: [
        { $and: [
            { $eq: [ "$id", 1206 ] },
            { $eq: [ "$field1", 0 ] }
        ]},
        { $and: [
            { $ne: [ "$id", 1206 ] },
            { $eq: [ "$field1", 1545001200 ] }
        ]},
    ],
}}}

Логически двете твърдения са еквивалентни:

  • Намерете съответствие с документа, като поставите отметка field1 == 0 ако id == 1206 , в противен случай съпоставете документа, като проверите field1 == 1545001200
  • Съвпада с документа, ако едно от двете (id == 1206 и field1 == 0 ) или (id != 1206 и field1 == 1545001200 ).


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Променливите на средата на OpenShift Python mongoDB не са зададени / не може да се свърже

  2. Обобщаване на $lookup с C#

  3. Сортиране на записи по начин, така че само записите, които съответстват на идентификатор, да са първи?

  4. Шардинг в MongoDB

  5. Mongoose не записва данни в MongoDB