MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Usa $cond all'interno di $match nell'aggregazione mongoDB

Devi solo riformulare un po' la logica.

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

Logicamente, le due affermazioni sono equivalenti:

  • Abbina il documento selezionando field1 == 0 se id == 1206 , altrimenti abbina il documento spuntando field1 == 1545001200
  • Abbina il documento se uno dei due (id == 1206 e field1 == 0 ) o (id != 1206 e field1 == 1545001200 ).