sql >> データベース >  >> NoSQL >> MongoDB

Mongoidを使用した計算フィールドに基づくクエリ

    自分で答えを見つけました。プレフィックスthis.* フィールドを参照できます。そして、JavaScript関数を使用できます。 MongoDBはどんどん涼しくなります!

    これが私の解決策です:

    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
    

    jsでのタイムスタンプの作成は異なります。そのため、最後の3つの数字を削除して丸める必要がありました。もっとエレガントな方法を知っている人がいたら、教えてください。

    残っている唯一の問題は、Dateを保存できないことです。 MongoDBへのオブジェクト。 Timeを使用する必要があることを常に教えてくれます 。 mongoidを3.0.1にアップグレードしたほうがいいと思います。



    1. pymongoのReplicaSetConnectionの使用:時々IndexErrorを取得します:カーソルにそのような項目はありません

    2. BSON配列をMongoDB3.2ドキュメントに追加し、値を抽出して戻します(MongoCXX 3.2)(C ++ 11)

    3. $ match集計で値の配列を見つけて、結果をグループ化するにはどうすればよいですか?

    4. 集計での動的値の使用