sql >> Database >  >> NoSQL >> MongoDB

Mongo Cast String naar Nummer voor Query

Update (geldig vanaf MongoDB v4.0):

U kunt een combinatie van $expr gebruiken en $toDouble om het gewenste gedrag als volgt te bereiken:

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

Oorspronkelijk antwoord (MongoDB v3.6 en lager):

MongoDB kan strings niet converteren naar getallen. Dus je enige optie hier is om de gevreesde $where te gebruiken operator:

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

Dit gebruikt geen indexen en is niet bepaald snel, maar misschien nog wel ok voor kleine verzamelingen.

Desalniettemin zou ik aanraden om getallen als numerieke typen op te slaan. Dus je moet je string convert converteren s naar int s of long s (of waarschijnlijk double s zelfs) zoals hier getoond: hoe tekenreeks naar numerieke waarden in mongodb te converteren




  1. Mongodb unieke schaarse index

  2. Hoe het laatste bericht van een chatgesprek in mongodb te krijgen

  3. MongoDB-shell-opdrachten gebruiken op het stuurprogramma van MongoDB 10Gen

  4. Hoe u uw functie kunt bekijkenCompatibilityVersion in MongoDB