猫鼬按日期更新,没有时间

Joh*_*ohn 1 javascript date mongoose mongodb node.js

我正在使用猫鼬4.7.x和mongodb 3.2。我想搜索所有日期而没有时间。例如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
Run Code Online (Sandbox Code Playgroud)

我尝试了这个:

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')
});
Run Code Online (Sandbox Code Playgroud)

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

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

Ron*_*don 5

您可以在一系列日期之间进行操作。使用$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')
});
Run Code Online (Sandbox Code Playgroud)

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