Aktualizacja (obowiązuje od MongoDB v4.0):
Możesz użyć kombinacji $expr i $toDouble aby osiągnąć pożądane zachowanie w ten sposób:
db.MyCollection.find({ $expr: { $lte: [ { $toDouble: "$Price" }, 1000.0 ] } })
Oryginalna odpowiedź (MongoDB v3.6 i starsze):
MongoDB nie może konwertować ciągów na liczby. Więc jedyną opcją tutaj jest użycie przerażającego $where operator:
db.MyCollection.find({ $where: "parseInt(this.Price) <= 1000" })
To nie będzie używać żadnych indeksów i nie jest zbyt szybkie, ale może nadal jest w porządku dla małych kolekcji.
Niemniej jednak sugerowałbym przechowywanie liczb jako typów liczbowych. Więc powinieneś przekonwertować swój string
s do int
s lub long
s (lub prawdopodobnie double
s nawet), jak pokazano tutaj: jak przekonwertować ciąg na wartości liczbowe w mongodb