2017-06-22 4 views
0

私は過去1週間以内に作成されたすべてのレコードを返すようMongoデータベースを取得しようとしています。 各レコードには'6/22/17 09:14'のようなフィールド'created at'があります。この日が過去1週間に発生したかどうかを確認するにはどうすればよいですか?Mongoクエリで日付を比較する方法

私はこのようになりますいくつかのコードがあります:異なる日付形式で

the_collection.find({ALERT_CREATED : {&gt : new Date() - ONE_WEEK}}).toArray(function(error, results) { 
    if (error) { 
     callback(error); 
    } else { 
     callback(null, results); 
    } 
}); 

を、二つの日付を比較することはできません。

UPDATE:
は、問題を明確にするためには、データベース内の日付はフォーム6/22/17 09:14を持っている、そのように日付()オブジェクトに対して正しく比較することはできません。それらを正しく比較する方法はありますか?

+0

フィールドタイプとは何ですか? –

+1

日付を日付の型として格納することを強くお勧めします。そのため、日付の比較を行うことができます。 –

答えて

0

MongoDBクエリで日数を差し引く必要があるかもしれません。コードの下に試してみてください:

the_collection.find(
    { 
     "ALERT_CREATED": 
     { 
      $gte: (new Date((new Date()).getTime() - (7 * 24 * 60 * 60 * 1000))) 
     } 
    }) 

    1 day = 1*24*60*60000 = 1 x 24 hours x 60 minutes x 60 seconds x 1000 milliseconds 
+0

これは、指定された日付形式とは異なります。日付は正しく比較されません。 – sumowrestler

0

まずあなたがcreated_atフィールドに(今日 - 7)を比較する日付を必要とし、MongoDBのの日付形式では。その後、来る日付だけを取得します。

var lastWeek = new Date(); 
lastWeek.setDate(lastWeek.getDate() -7); 

db.the_collection.find({'created_at': {'$gte': lastWeek}}); 
+0

これは動作しません。 '6/22/17 15:44> Thu Jun 15 2017 15:44:04 GMT-0700(太平洋標準時)'はfalseを返します。また、これで問題は解決されません。日付はまだ異なる形式です。 – sumowrestler