sql >> Databasteknik >  >> NoSQL >> MongoDB

Fråga baserad på beräknade fält med Mongoid

Hittade svaret själv. Med prefixet this.* Jag kan referera till fälten. Och jag kan använda JavaScript-funktioner. MongoDB blir svalare och svalare!

Så här är 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

Skapa tidsstämplar i js fungerar annorlunda. Så jag var tvungen att bli av med de tre sista siffrorna och runda dem. Om någon vet ett mer elegant sätt, vänligen meddela mig.

Mitt enda problem kvar är att jag inte kan lagra ett Date invända mot MongoDB. Den säger alltid till mig att jag måste använda Time . Jag tror att det är bättre att uppgradera mongoid till 3.0.1.



  1. Hur man använder $in-operatorn i mongodb med två fält i java

  2. Hur man hämtar bildfiler från mongodb till html-sida

  3. MongoDB Collection-uppdatering:initiera ett dokument med standardvärden

  4. Returnera endast specifika fält från underdokument för projektionsmatris