MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Use $cond dentro de $match na agregação do mongoDB


Você apenas tem que reformular a lógica um pouco.
{ $match: { $expr: {
    $or: [
        { $and: [
            { $eq: [ "$id", 1206 ] },
            { $eq: [ "$field1", 0 ] }
        ]},
        { $and: [
            { $ne: [ "$id", 1206 ] },
            { $eq: [ "$field1", 1545001200 ] }
        ]},
    ],
}}}


Logicamente, as duas declarações são equivalentes:
  • Faça a correspondência do documento marcando field1 == 0 if id == 1206 , caso contrário, corresponda ao documento marcando field1 == 1545001200
  • Corresponder ao documento se (id == 1206 e field1 == 0 ) ou (id != 1206 e field1 == 1545001200 ).