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

Mongo Cast String to Number pour la requête

Mise à jour (valide à partir de MongoDB v4.0) :

Vous pouvez utiliser une combinaison de $expr et $toDouble pour obtenir le comportement souhaité comme ceci :

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

Réponse originale (MongoDB v3.6 et versions antérieures) :

MongoDB ne peut pas convertir les chaînes en nombres. Donc, votre seule option ici est d'utiliser le redoutable $where opérateur :

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

Cela n'utilisera aucun index et n'est pas exactement rapide, mais peut-être encore acceptable pour les petites collections.

Néanmoins, je recommanderais de stocker les nombres sous forme de types numériques. Vous devez donc convertir votre string s en int s ou long s (ou probablement double s even) comme indiqué ici : comment convertir une chaîne en valeurs numériques dans mongodb