2017-07-19 11 views
1

私のmongodbに文書があります。この文書にはeventフィールドがあります - このfildタイプはdateです。年、月、日は問題ではなく、日中の時間だけを意味します。私はcronスクリプトを毎日mongodbからevent(日付型)フィールドを持つドキュメントを(スクリプトの呼び出し日まで)10分以内に集計したい。それを正しい方法で実装する方法は?mongodb月曜日に特定の時間/分に最も近い日付で文書を集約します

答えて

1
db.mytable.find(
    { 
     "event": { 
      $gt: new Date(new Date().getTime() - (10 * 60 * 1000)) 
     } 
    }) 

このクエリでは、過去10分以内の値を持つ"event"性質を持っているすべての文書を検索します。引数なしのnew Date()は、「今すぐ」を表すDateを返します。それからミリ秒で数値エポック時間を引き出し、10分を減算します。より具体的には、(10分×60秒/秒* 1000ミリ秒/秒)を引いて、正しい単位に変換します。その値を使用して別のnew Date(...)を作成します。これは$gt(より大きい)フィルタリング条件に入るものです。

あなたは「集約」の必要性について言及しました。そうであれば、この同じクエリは、必要なすべてのAggregation Pipeline内で使用することもできます。

関連する問題