MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Como posso fazer uma pesquisa condicional no pymongo?


Você pode usar cond em $project ou $expr em $match estágio como:
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
                ]
              }
            ]
          }
        }
      }
    }
  }
])

Aqui você primeiro verifica se o campo audiPrice não é nulo e depois realiza a correspondência nessa chave mais na chave de preço.