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

Truy vấn dựa trên các trường được tính toán với Mongoid

Tự mình tìm ra câu trả lời. Với tiền tố this.* Tôi có thể tham khảo các lĩnh vực. Và tôi có thể sử dụng các hàm JavaScript. MongoDB ngày càng mát hơn!

Vì vậy, đây là giải pháp của tôi:

class Invoice
  include Mongoid::Document
  field :invoice_date, :type => Date
  field :days_for_payment, :type => Integer
  ...

  scope :overdue, where("(Math.round(this.invoice_date.getTime() / 1000) + (this.days_for_payment * 24 * 3600)) < #{Time.now.to_i}")

  ...
end

Tạo dấu thời gian trong js hoạt động khác nhau. Vì vậy, tôi phải loại bỏ ba số cuối cùng và làm tròn chúng. Nếu ai biết cách khác hay hơn, vui lòng cho tôi biết.

Vấn đề duy nhất còn lại của tôi là tôi không thể lưu trữ Date phản đối MongoDB. Nó luôn cho tôi biết tôi phải sử dụng Time . Tôi nghĩ tốt hơn nên nâng cấp mongoid lên 3.0.1.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Tìm tài liệu MongoDB thông qua một từ trong mô tả trường trong mỗi sản phẩm với Mongoskin

  2. mongodb 3.x trình điều khiển tương thích Android

  3. Làm cách nào để lưu trữ mảng đã sắp xếp trở lại MongoDB?

  4. Các vị trí truy vấn trong bán kính trong MongoDB

  5. Trong MongoDB, tìm kiếm trong một mảng và sắp xếp theo số lượng kết quả phù hợp