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

Forespørgsel baseret på beregnede felter med Mongoid

Har selv fundet svaret. Med præfikset this.* Jeg kan henvise til felterne. Og jeg kan bruge JavaScript-funktioner. MongoDB bliver køligere og køligere!

Så her er min løsning:

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

Oprettelse af tidsstempler i js fungerer anderledes. Så jeg var nødt til at slippe af med de sidste tre tal og runde dem. Hvis nogen kender en mere elegant måde, så lad mig det vide.

Mit eneste problem tilbage er, at jeg ikke kan gemme en Date indsigelse mod MongoDB. Den fortæller mig altid, at jeg skal bruge Time . Jeg tror, ​​jeg hellere opgraderer mongoid til 3.0.1.



  1. Fungerer PHP 5.5 med MongoDB-driver?

  2. MongoDB lister databaser med et givet præfiks i Go

  3. Mongoose sub document pre remove middleware ikke kaldt

  4. MongoDB - underlig opførsel i faldende indeks