我正在使用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()
将返回日期时间。
如何在没有时间的情况下搜索具有特定日期的所有字段?如果有必要,我可以更改模型。
答案 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之间的所有文件都将更新。