sql >> Databáze >  >> NoSQL >> MongoDB

Dotaz založený na vypočítaných polích pomocí Mongoid

Odpověď jsem našel sám. S předponou this.* Mohu odkazovat na pole. A umím používat funkce JavaScriptu. MongoDB je stále chladnější!

Takže tady je moje řešení:

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

Vytvoření časového razítka v js funguje jinak. Musel jsem se tedy zbavit posledních tří čísel a zaokrouhlit je. Pokud někdo zná elegantnější způsob, dejte mi prosím vědět.

Můj jediný problém je, že nemohu uložit Date protest proti MongoDB. Vždy mi to říká, že musím použít Time . Myslím, že by bylo lepší upgradovat mongoid na 3.0.1.



  1. Jak bych měl strukturovat svou aplikaci node/express/mongodb?

  2. MongoDB získat SubDocument

  3. Co se stane, když připojení k MongoDB nejsou uzavřena?

  4. Databáze MongoDB, ekvivalent pro SELECT sloupec1, sloupec2 FROM tbl