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

Comment puis-je faire une recherche conditionnelle dans pymongo?

Vous pouvez utiliser cond dans $project ou $expr dans $match étape comme :

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
                ]
              }
            ]
          }
        }
      }
    }
  }
])

Ici, vous vérifiez d'abord si le champ audiPrice n'est pas nul, puis effectuez la correspondance sur cette clé, sinon sur la clé de prix.