MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Requête basée sur des champs calculés avec Mongoid

J'ai trouvé la réponse moi-même. Avec le préfixe this.* Je peux faire référence aux champs. Et je peux utiliser les fonctions JavaScript. MongoDB devient de plus en plus cool !

Voici donc ma solution :

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

La création d'horodatage dans js fonctionne différemment. J'ai donc dû supprimer les trois derniers chiffres et les arrondir. Si quelqu'un connaît une manière plus élégante, merci de me le faire savoir.

Mon seul problème est que je ne peux pas stocker une Date objecter à MongoDB. Il me dit toujours que je dois utiliser Time . Je pense que je ferais mieux de mettre à jour mongoid vers 3.0.1.