MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Abfrage basierend auf berechneten Feldern mit Mongoid

Habe die Antwort selbst gefunden. Mit dem Präfix this.* Ich kann auf die Felder verweisen. Und ich kann JavaScript-Funktionen nutzen. MongoDB wird immer cooler!

Also hier ist meine Lösung:

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

Die Erstellung von Zeitstempeln in js funktioniert anders. Also musste ich die letzten drei Zahlen loswerden und runden. Wenn jemand einen eleganteren Weg kennt, lass es mich bitte wissen.

Mein einziges Problem ist, dass ich kein Date speichern kann Objekt an MongoDB. Es sagt mir immer, dass ich Time verwenden muss . Ich glaube, ich aktualisiere Mongoid besser auf 3.0.1.