2017-06-22 230 views
0

我想让Mongo数据库返回过去一周内创建的所有记录。 每个记录有一个字段'created at',这将是类似'6/22/17 09:14'。我如何检查这个日期是否发生在过去的一周?如何在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,因此不能对一个Date()对象正确比较。有什么方法可以正确比较它们吗?

+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

首先,你需要的日期(今天 - 7)created_at领域来比较,在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