我设置了一个mongo数据库。
在mongoDb中创建一个新的日期对象,以ISO格式创建一个日期对象
例如:ISODate("2012-07-14T00:00:00Z")
我正在使用node.js连接到mongo数据库并查询数据库。
当我在javascript中创建一个新的日期对象(new Date()
)时,它会创建一个javascript日期对象,例如:Wed Mar 06 2013 14:49:51 GMT-0600 (CST)
有没有办法在javascript中创建ISO日期对象,以便我可以直接将对象发送到mongoDb并执行日期查询
我可以在mongoDb
中执行以下查询db.schedule_collection.find({
start_date: { '$gte': new Date(2012, 01, 03, 8, 30) }
})
但是当我从节点
发送javascript日期对象时无法执行mongodb cookbook提供了一个使用datetime模块查询mongo数据库的python示例,但没有提供任何使用javascript的示例。
感谢任何帮助。 提前感谢你
答案 0 :(得分:83)
答案 1 :(得分:10)
在节点中,Mongo驱动程序将为您提供ISO字符串,而不是对象。 (例如:Mon Nov 24 2014 01:30:34 GMT-0800 (PST)
)因此,只需将其转换为js日期:new Date(ISOString);
答案 2 :(得分:9)
尝试以下:
var temp_datetime_obj = new Date();
collection.find({
start_date:{
$gte: new Date(temp_datetime_obj.toISOString())
}
}).toArray(function(err, items) {
/* you can console.log here */
});
答案 3 :(得分:2)
我解决了这个问题,在node.js中实例化一个新的Date对象:...
在Javascript中,将Date()。toISOString()发送到nodejs:...
var start_date = new Date(2012, 01, 03, 8, 30);
$.ajax({
type: 'POST',
data: { start_date: start_date.toISOString() },
url: '/queryScheduleCollection',
dataType: 'JSON'
}).done(function( response ) { ... });
然后使用ISOString在nodejs中创建一个新的Date对象:..
exports.queryScheduleCollection = function(db){
return function(req, res){
var start_date = new Date(req.body.start_date);
db.collection('schedule_collection').find(
{ start_date: { $gte: start_date } }
).toArray( function (err,d){
...
res.json(d)
})
}
};
注意:我正在使用Express和Mongoskin。
答案 4 :(得分:1)
这对我有用:
var start = new Date("2020-10-15T00:00:00.000+0000");
//or
start = new date("2020-10-15T00:00:00.000Z");
collection.find({
start_date:{
$gte: start
}
})...etc