Javascript Mongoose按日期无时间更新

Javascript Mongoose按日期无时间更新,javascript,node.js,mongodb,date,mongoose,Javascript,Node.js,Mongodb,Date,Mongoose,我使用的是Mongoose4.7.x和MongoDB3.2。我想搜索所有没有时间的日期。例如,将所有obj更新为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 我试过

我使用的是Mongoose4.7.x和MongoDB3.2。我想搜索所有没有时间的日期。例如,
将所有obj更新为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更新所有字段,因为
newdate()
将返回日期时间


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

您可以在一系列日期之间进行更改。对于较低的范围使用
$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之间的所有文档都将更新。

您可以在一系列日期之间进行更新。对于较低的范围使用
$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之间的所有文档都将更新。

Ohh我不知道
$gte
$lt
。太酷了。非常感谢@Ron!您知道如何在数据库中找到双字段吗?我尝试了这个方法,但它不会返回任何结果:
db.getCollection('Model').find({longitude:354.049987792969})
根据这一点,mongoose不支持开箱即用的双精度格式并将其转换为字符串,所以可以尝试这样过滤:
db.getCollection('Model').find({longitude:'354.049987792969'))
Ohh我不知道
$gte
$lt
。太酷了。非常感谢@Ron!您知道如何在数据库中找到双字段吗?我尝试了这个方法,但它不会返回任何结果:
db.getCollection('Model').find({longitude:354.049987792969})
根据这一点,mongoose不支持开箱即用的双精度格式并将其转换为字符串,所以可以尝试这样过滤:
db.getCollection('Model').find({longitude:'354.049987792969')