MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Mongo Cast String to Number for Query

Aktualisierung (gültig ab MongoDB v4.0):

Sie können eine Kombination aus $expr verwenden und $toDouble um das gewünschte Verhalten wie folgt zu erreichen:

db.MyCollection.find({ $expr: { $lte: [ { $toDouble: "$Price" }, 1000.0 ] } })

Ursprüngliche Antwort (MongoDB v3.6 und darunter):

MongoDB kann Zeichenfolgen nicht in Zahlen konvertieren. Ihre einzige Option hier ist also die Verwendung des gefürchteten $where Betreiber:

db.MyCollection.find({ $where: "parseInt(this.Price) <= 1000" })

Dies verwendet keine Indizes und ist nicht gerade schnell, aber für kleine Sammlungen vielleicht noch in Ordnung.

Trotzdem würde ich empfehlen, Zahlen als numerische Typen zu speichern. Sie sollten also Ihren string umwandeln s zu int s oder long s (oder wahrscheinlich double s even) wie hier gezeigt: wie man Strings in mongodb in numerische Werte umwandelt