sql >> Database >  >> NoSQL >> MongoDB

Query op basis van berekende velden met Mongoid

Zelf het antwoord gevonden. Met het voorvoegsel this.* Ik kan verwijzen naar de velden. En ik kan JavaScript-functies gebruiken. MongoDB wordt cooler en cooler!

Dus hier is mijn oplossing:

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

Het maken van een tijdstempel in js werkt anders. Dus ik moest de laatste drie cijfers weglaten en ze afronden. Als iemand een elegantere manier weet, laat het me dan weten.

Het enige probleem dat ik nog heb, is dat ik geen Date kan opslaan bezwaar tegen MongoDB. Het vertelt me ​​altijd dat ik Time . moet gebruiken . Ik denk dat ik mongoid beter kan upgraden naar 3.0.1.



  1. Django met MongoDB

  2. Hoe JSON uit MongoDB te exporteren met Robomongo

  3. MongoDB met CSV-gegevens

  4. MongoDB Convert String naar Array