sql >> Databasteknik >  >> NoSQL >> MongoDB

Använd $cond inom $match i mongoDB-aggregation

Du måste bara formulera om logiken lite.

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

Logiskt sett är de två påståendena likvärdiga:

  • Matcha dokumentet genom att markera field1 == 0 om id == 1206 , annars matcha dokumentet genom att markera field1 == 1545001200
  • Matcha dokumentet om någon av dem (id == 1206 och field1 == 0 ) eller (id != 1206 och field1 == 1545001200 ).


  1. Hur skalning verkligen fungerar i Apache HBase

  2. StackExchange TimeoutException när du försöker infoga 750 objekt i 2 uppsättningar i redis

  3. Mongo Java-drivrutin följer inte gränsmetoden

  4. Partitionering av poster i en samling i MongoDB