如何比较Mongo查询中的日期

时间:2017-06-22 21:53:48

标签: javascript node.js mongodb

我正在尝试让Mongo数据库返回过去一周内创建的所有记录。 每条记录都有一个'created at'字段,类似于'6/22/17 09:14'。如何检查此日期是否发生在过去一周?

我有一些看起来像这样的代码:

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

使用不同的日期格式,无法比较两个日期。

更新
为了澄清该问题,数据库中的日期具有6/22/17 09:14形式,因此无法与Date()对象进行正确比较。有没有办法正确比较它们?

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

首先,您需要使用MongoDB的日期格式将created_at字段与(今天 - 7)进行比较的日期。然后只获得之后的日期。

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

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

答案 2 :(得分:0)

日期似乎不是标准格式。您将必须手动将给定的字符串转换为有效的日期字符串。

一种方法是分割字符串,并使用here中记载的wrapper.find('Snackbar').prop('action')[0].prop('onClick')(); 来构造日期。

dateFormParts