sql >> Base de Datos >  >> NoSQL >> MongoDB

Filtrado de valores en dólares con mongodb

También me gustaría comenzar diciendo que almacenar valores numéricos en su base de datos formateados para su presentación como cadenas es una mala idea, que sin duda ya sabe.

Con eso fuera del camino, aquí está la agregación que está buscando:

db.collection.aggregate([
  {
    "$project": {
      "AppraisedValueDisplay": {
        $replaceAll: {
          input: "$AppraisedValueDisplay",
          find: {
            $literal: "$"
          },
          replacement: ""
        }
      }
    }
  },
  {
    "$project": {
      "AppraisedValueDisplay": {
        "$toInt": {
          $replaceAll: {
            input: "$AppraisedValueDisplay",
            find: ",",
            replacement: ""
          }
        }
      }
    }
  },
  {
    $match: {
      AppraisedValueDisplay: {
        $gt: 30000,
        $lt: 40000
      }
    }
  }
])

La idea es reemplazar el $ y , con cadenas vacías y luego convierte las cadenas resultantes en enteros. A partir de ese momento, solo es cuestión de hacer coincidir los valores numéricos. Zona de juegos:https://mongoplayground. red/p/YU65M-q1QCM