sql >> Base de Datos >  >> NoSQL >> MongoDB

Use $cond dentro de $match en la agregación mongoDB

Solo tienes que reformular un poco la lógica.

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

Lógicamente, las dos declaraciones son equivalentes:

  • Haga coincidir el documento marcando field1 == 0 si id == 1206 , de lo contrario, haga coincidir el documento marcando field1 == 1545001200
  • Coincide con el documento si (id == 1206 y field1 == 0 ) o (id != 1206 y field1 == 1545001200 ).