Mongoose按日期更新,没有时间

时间:2016-12-14 14:26:04

标签: javascript node.js mongodb date mongoose

我正在使用mongoose 4.7.x和mongodb 3.2。我想没有时间搜索所有日期。 E.g update all obj with this date 2016-12-14

在我的数据库中,我有多个这样的日期时间:

2016-12-14 00:00:00.000Z
2016-12-14 00:00:00.000Z

2016-12-14 01:00:00.000Z
2016-12-14 01:00:00.000Z

2016-12-14 02:00:00.000Z
2016-12-14 02:00:00.000Z

我试过了:

var query = {date: new Date('2016-12-14')};
var doc = {name: 'TEST'};
var options = {multi: true};

Model.update(query, doc, options, function(err, result){
    console.log('All data updated')
});

但是这只会在时间00:00:00更新所有字段,因为new Date()将返回日期时间。

如何在没有时间的情况下搜索具有特定日期的所有字段?如果有必要,我可以更改模型。

1 个答案:

答案 0 :(得分:4)

您可以在一系列日期之间进行此操作。使用$gte表示较低范围,$lt表示较高范围(第二天),以防止它在00:00:00时选择第二天。

var query = {
    date: {
        $gte: new Date('2016-12-14'),
        $lt: new Date('2016-12-15')
    }
};
var doc = {name: 'TEST'};
var options = {multi: true};

Model.update(query, doc, options, function(err, result){
    console.log('All data updated')
});

2016-12-14 00:00:00.000Z和2016-12-14 23:59:59.999Z之间的所有文件都将更新。