MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Verwenden Sie $cond innerhalb von $match in der MongoDB-Aggregation

Sie müssen nur die Logik ein wenig umformulieren.

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

Logischerweise sind die beiden Anweisungen äquivalent:

  • Passen Sie das Dokument an, indem Sie field1 == 0 aktivieren wenn id == 1206 , andernfalls passen Sie das Dokument an, indem Sie field1 == 1545001200 überprüfen
  • Passen Sie das Dokument an, wenn entweder (id == 1206 und field1 == 0 ) oder (id != 1206 und field1 == 1545001200 ).