MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Zapytanie oparte na polach obliczeniowych za pomocą Mongoid

Sam znalazłem odpowiedź. Z prefiksem this.* Mogę odwołać się do pól. I potrafię używać funkcji JavaScript. MongoDB staje się coraz fajniejszy!

Oto moje rozwiązanie:

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

Tworzenie znacznika czasu w js działa inaczej. Musiałem więc pozbyć się ostatnich trzech liczb i zaokrąglić je. Jeśli ktoś zna bardziej elegancki sposób, daj mi znać.

Pozostał mi jedyny problem, że nie mogę zapisać Date obiekt do MongoDB. Zawsze mówi mi, że muszę użyć Time . Myślę, że lepiej uaktualnić mongoid do 3.0.1.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongoose save() nie aktualizuje wartości w tablicy w dokumencie bazy danych

  2. Jak zrzucić całą bazę danych MongoDB jako text/json?

  3. MongoParseError:opcje useCreateIndex, useFindAndModify nie są obsługiwane

  4. Czy pole listy może być kluczem fragmentu w MongoDB?

  5. Zwiększ rlimit Mac OSX 10.8