Update (geldig vanaf MongoDB v4.0):
U kunt een combinatie van $expr gebruiken en $toDouble om het gewenste gedrag als volgt te bereiken:
db.MyCollection.find({ $expr: { $lte: [ { $toDouble: "$Price" }, 1000.0 ] } })
Oorspronkelijk antwoord (MongoDB v3.6 en lager):
MongoDB kan strings niet converteren naar getallen. Dus je enige optie hier is om de gevreesde $where te gebruiken operator:
db.MyCollection.find({ $where: "parseInt(this.Price) <= 1000" })
Dit gebruikt geen indexen en is niet bepaald snel, maar misschien nog wel ok voor kleine verzamelingen.
Desalniettemin zou ik aanraden om getallen als numerieke typen op te slaan. Dus je moet je string
convert converteren s naar int
s of long
s (of waarschijnlijk double
s zelfs) zoals hier getoond: hoe tekenreeks naar numerieke waarden in mongodb te converteren