Aggiornamento (valido da MongoDB v4.0 in poi):
Puoi utilizzare una combinazione di $expr e $toDouble per ottenere il comportamento desiderato in questo modo:
db.MyCollection.find({ $expr: { $lte: [ { $toDouble: "$Price" }, 1000.0 ] } })
Risposta originale (MongoDB v3.6 e precedenti):
MongoDB non può convertire stringhe in numeri. Quindi la tua unica opzione qui è usare il temuto $where operatore:
db.MyCollection.find({ $where: "parseInt(this.Price) <= 1000" })
Questo non utilizzerà alcun indice e non è esattamente veloce, ma forse va bene ancora per piccole raccolte.
Tuttavia, consiglierei di memorizzare i numeri come tipi numerici. Quindi dovresti convertire la tua string
s a int
so long
s (o probabilmente double
s pari) come mostrato qui: come convertire una stringa in valori numerici in mongodb