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

Mongo Cast String to Number per la query

Aggiornamento (valido da MongoDB v4.0 in poi):

Puoi utilizzare una combinazione di $expr e $toDouble per ottenere il comportamento desiderato in questo modo:

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

Risposta originale (MongoDB v3.6 e precedenti):

MongoDB non può convertire stringhe in numeri. Quindi la tua unica opzione qui è usare il temuto $where operatore:

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

Questo non utilizzerà alcun indice e non è esattamente veloce, ma forse va bene ancora per piccole raccolte.

Tuttavia, consiglierei di memorizzare i numeri come tipi numerici. Quindi dovresti convertire la tua string s a int so long s (o probabilmente double s pari) come mostrato qui: come convertire una stringa in valori numerici in mongodb