MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Utiliser $cond dans $match dans l'agrégation mongoDB

Il vous suffit de reformuler un peu la logique.

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

Logiquement, les deux déclarations sont équivalentes :

  • Faites correspondre le document en cochant field1 == 0 si id == 1206 , sinon faites correspondre le document en cochant field1 == 1545001200
  • Faites correspondre le document si l'un ou l'autre (id == 1206 et field1 == 0 ) ou (id != 1206 et field1 == 1545001200 ).