sql >> Database teknologi >  >> NoSQL >> MongoDB

Mongo Cast streng til nummer for forespørgsel

Opdatering (gyldig fra MongoDB v4.0 og fremefter):

Du kan bruge en kombination af $expr og $toDouble for at opnå den ønskede adfærd som denne:

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

Originalt svar (MongoDB v3.6 og derunder):

MongoDB kan ikke konvertere strenge til tal. Så din eneste mulighed her er at bruge den frygtede $where operatør:

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

Dette vil ikke bruge nogen indekser og er ikke ligefrem hurtig, men måske lidt ok stadig for små samlinger.

Ikke desto mindre vil jeg anbefale at gemme tal som numeriske typer. Så du bør konvertere din string s til int s eller long s (eller sandsynligvis double s lige) som vist her: hvordan man konverterer streng til numeriske værdier i mongodb




  1. Sende beskeder til grupper i Django Channels 2

  2. Langsomt områdeforespørgsel på et multinøgleindeks

  3. systemctl blev ikke fundet under opbygning af mongo-billede

  4. Forkert antal dokumenter i MongoDB shard cluster