Aktualizace (platná od MongoDB v4.0 výše):
Můžete použít kombinaci $expr a $toDouble k dosažení požadovaného chování takto:
db.MyCollection.find({ $expr: { $lte: [ { $toDouble: "$Price" }, 1000.0 ] } })
Původní odpověď (MongoDB v3.6 a nižší):
MongoDB neumí převádět řetězce na čísla. Takže vaší jedinou možností je použít obávaný $where operátor:
db.MyCollection.find({ $where: "parseInt(this.Price) <= 1000" })
Nebude to používat žádné indexy a není to zrovna rychlé, ale možná je to pro malé sbírky pořád v pořádku.
Přesto bych doporučil ukládat čísla jako číselné typy. Měli byste tedy převést svůj string
s na int
s nebo long
s (nebo pravděpodobně double
s even), jak je znázorněno zde: jak převést řetězec na číselné hodnoty v mongodb