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

Mongo Cast String to Number para consulta

Actualización (válida desde MongoDB v4.0 en adelante):

Puede usar una combinación de $expr y $toDouble para lograr el comportamiento deseado como este:

db.MyCollection.find({ $expr: { $lte: [ { $toDouble: "$Price" }, 1000.0 ] } })

Respuesta original (MongoDB v3.6 y anterior):

MongoDB no puede convertir cadenas en números. Entonces, su única opción aquí es usar el temido $where operador:

db.MyCollection.find({ $where: "parseInt(this.Price) <= 1000" })

Esto no usará ningún índice y no es exactamente rápido, pero tal vez esté bien para colecciones pequeñas.

No obstante, recomendaría almacenar números como tipos numéricos. Entonces deberías convertir tu string s a int s o long s (o probablemente double s incluso) como se muestra aquí:cómo convertir cadenas a valores numéricos en mongodb