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