2016-12-14 174 views
0

我使用猫鼬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 

我尝试这样做:

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') 
}); 

但由于new Date()会回报,这将只是时间00:00:00更新的所有字段日期时间。

我该如何在没有时间的情况下搜索某个日期的所有字段?如果有必要,我可以改变模型。

回答

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之间的所有文件都会更新。

+0

哦,我不知道'$ gte'和'$ lt'。这太酷了。谢谢soooo @Ron! – John

+1

欢迎您,很高兴它帮助:) –

+0

你知道我怎么能找到我的数据库中的双字段?我试过这个,但是它不会返回任何东西:'db.getCollection('Model')。find({longitude:354.049987792969})' – John