Cập nhật (hợp lệ từ MongoDB v4.0 trở đi):
Bạn có thể sử dụng kết hợp $ expr và $ toDouble để đạt được hành vi mong muốn như sau:
db.MyCollection.find({ $expr: { $lte: [ { $toDouble: "$Price" }, 1000.0 ] } })
Câu trả lời gốc (MongoDB v3.6 trở xuống):
MongoDB không thể chuyển đổi chuỗi thành số. Vì vậy, lựa chọn duy nhất của bạn ở đây là sử dụng $ ở đâu đáng sợ nhà điều hành:
db.MyCollection.find({ $where: "parseInt(this.Price) <= 1000" })
Điều này sẽ không sử dụng bất kỳ chỉ mục nào và không chính xác nhanh nhưng có lẽ vẫn ổn đối với các bộ sưu tập nhỏ.
Tuy nhiên, tôi khuyên bạn nên lưu trữ số dưới dạng số. Vì vậy, bạn nên chuyển đổi string
của mình s thành int
s hoặc long
s (hoặc có thể là double
s chẵn) như được hiển thị ở đây: cách chuyển đổi chuỗi thành giá trị số trong mongodb