MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Mongo Cast String para Number for Query


Atualização (válida do MongoDB v4.0 em diante):

Você pode usar uma combinação de $expr e $toDouble para alcançar o comportamento desejado como este:
db.MyCollection.find({ $expr: { $lte: [ { $toDouble: "$Price" }, 1000.0 ] } })

Resposta original (MongoDB v3.6 e abaixo):

O MongoDB não pode converter strings em números. Portanto, sua única opção aqui é usar o temido $where operador:
db.MyCollection.find({ $where: "parseInt(this.Price) <= 1000" })

Isso não usará nenhum índice e não é exatamente rápido, mas talvez ainda seja bom para pequenas coleções.

No entanto, eu recomendaria armazenar números como tipos numéricos. Então você deve converter sua string s para int s ou long s (ou provavelmente double s mesmo) como mostrado aqui: como converter string em valores numéricos no mongodb