Uppdatering (giltig från MongoDB v4.0 och framåt):
Du kan använda en kombination av $expr och $toDouble för att uppnå önskat beteende så här:
db.MyCollection.find({ $expr: { $lte: [ { $toDouble: "$Price" }, 1000.0 ] } })
Originalt svar (MongoDB v3.6 och lägre):
MongoDB kan inte konvertera strängar till tal. Så ditt enda alternativ här är att använda den fruktade $where operatör:
db.MyCollection.find({ $where: "parseInt(this.Price) <= 1000" })
Detta kommer inte att använda några index och är inte direkt snabbt men kanske ganska ok ändå för små samlingar.
Icke desto mindre skulle jag rekommendera att lagra siffror som numeriska typer. Så du bör konvertera din string
s till int
s eller long
s (eller förmodligen double
s jämnt) som visas här: hur man konverterar sträng till numeriska värden i mongodb