過去5分間にすべて新しいものを取得したい場合は、いくつかの計算を行う必要がありますが、難しくありません...
最初に、照合するプロパティにインデックスを作成します(降順の場合は並べ替え方向-1、昇順の場合は1)
db.things.createIndex({ createdAt: -1 }) // descending order on .createdAt
次に、最後の5分間(60秒* 5分)に作成されたドキュメントをクエリします.getTime()
。JavaScriptはミリ秒を返すため、new Date()
コンストラクタへの入力として使用する前に1000を乗算する必要があります。
db.things.find({
createdAt: {
$gte: new Date(new Date().getTime()-60*5*1000).toISOString()
}
})
.count()
の説明new Date(new Date().getTime()-60*5*1000).toISOString()
は次のとおりです。
まず、「5分前」を計算します。
new Date().getTime()
現在の時間をミリ秒で示します
- それから5分(ミリ秒単位)を差し引きます。- 簡単に変更できるように秒を
5*60*1000
掛けるだけ60
です。私は変更することができます5
し120
、私は2時間(120分)をしたい場合。
new Date().getTime()-60*5*1000
私たちに与える1484383878676
(5分前ms)
次に、それをnew Date()
コンストラクタにフィードして、MongoDBタイムスタンプで必要なISO文字列形式を取得する必要があります。
{ $gte: new Date(resultFromAbove).toISOString() }
(mongodb .find()クエリ)
- 変数を持つことはできないので、すべてを一度に実行します。
new Date(new Date().getTime()-60*5*1000)
- ...次にISO文字列に変換します。
.toISOString()
new Date(new Date().getTime()-60*5*1000).toISOString()
くれます 2017-01-14T08:53:17.586Z
もちろん、node-mongodb-nativeドライバーを使用している場合、変数を使用するとこれは少し簡単になりますが、これは、物事をチェックするために通常使用するmongoシェルで機能します。