MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Mongo truyền chuỗi thành số cho truy vấn

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 $ 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




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bản sao MongoDB không có thiết lập chính, cần thiết lập bản sao chính mới

  2. Cách thiết lập tính năng ngang hàng giữa MongoDB Atlas và Ứng dụng nút môi trường tiêu chuẩn của Google App Engine

  3. Trình điều khiển Promise và nodejs MongoDB

  4. Golang / MGO - hoảng sợ:không có máy chủ nào có thể truy cập

  5. Thực thi MongoTemplate.aggregate mà không cần kiểm tra lại hàng