sql >> Databasteknik >  >> NoSQL >> MongoDB

Mongo Cast sträng till nummer för fråga

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




  1. Vad är skillnaden mellan en changeStream och tailable cursor i MongoDB

  2. Hur exakt matchar hela dokumentet?

  3. uppdatera i mongodb med $in-fråga?

  4. Vilka är fördelarna med att använda en schemafri databas som MongoDB jämfört med en relationsdatabas?