sql >> Database >  >> NoSQL >> MongoDB

Gebruik $cond binnen $match in mongoDB-aggregatie

Je hoeft alleen de logica een beetje te herformuleren.

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

Logischerwijs zijn de twee uitspraken equivalent:

  • Overeenkomen met het document door field1 == 0 . aan te vinken if id == 1206 , vergelijk het document anders door field1 == 1545001200 . aan te vinken
  • Overeenkomen met het document indien (id == 1206 en field1 == 0 ) of (id != 1206 en field1 == 1545001200 ).


  1. Kan MongoDB worden verpakt in een Electron-app?

  2. mongo + passagier:juiste manier om opnieuw verbinding te maken met de database vanuit rails? hoe zorg je voor optimale mongo-prestaties?

  3. Manier om het geheugengebruik door mangoesten te verlagen bij het uitvoeren van een zoekopdracht

  4. Hoe MongoDB opvragen met like