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

Wie kann ich eine bedingte Suche in Pymongo durchführen?

Sie können cond verwenden in $project oder $expr in $match Stufe als:

collectionName.aggregate([
  {
    $match: {
      $expr: {
        $cond: {
          if: {
            $gt: [
              "$audiPrice",
              null
            ]
          },
          then: {
            $and: [
              {
                $gte: [
                  "$audiPrice",
                  price * 0.25
                ]
              },
              {
                $lte: [
                  "$audiPrice",
                  price * 1.75
                ]
              }
            ]
          },
          else: {
            $and: [
              {
                $gte: [
                  "$price",
                  price * 0.25
                ]
              },
              {
                $lte: [
                  "$price",
                  price * 1.75
                ]
              }
            ]
          }
        }
      }
    }
  }
])

Hier überprüfen Sie zuerst, ob das Feld audiPrice nicht null ist, und führen dann den Abgleich mit diesem Schlüssel, sonst mit dem Preisschlüssel durch.