使用MongoDB和NodeJS查询特定日期

时间:2014-09-15 18:19:50

标签: node.js mongodb mongoose

在MongoDB Collection中,我有一个Date对象,它记录了事件的日期和时间。我试图根据具体日期进行查询,并忽略时间,即显示今天的所有事件。

Model.js

var EventSchema = new Schema({
eventName        : String,
eventDate        : Date, 
eventLocation    : String,
eventLocationGeo : String,
eventCreator     : ObjectId
});

我的主要 app.js 正在寻找Unix时间戳格式的日期。

//Get Events based on Unix Time Stamp Date
app.get('/events/date/:date', passportConf.isAuthenticated, function(req, res){
var user = req.user._id;
var date = req.params.date;
console.log('date - ' + date);
eventController.getEventsByDate(user, date, req, res);
});

典型的REST调用

    http://localhost/events/date/1410764400

大多数参考文章都引用了使用$ gte和$ lt但是没有在哪里提及如何剥离时间以便我的查询最终根据完整的日期和时间拉出24小时。

1 个答案:

答案 0 :(得分:0)

我建议您使用moment.js library中的moment.unix(req.params.date).startOf('day').toDate()moment.unix(req.params.date).endOf('day').toDate(),这非常有用。

只需ECMAScript日期,即可:

var start = new Date(req.params.date);
start.setHours(0);
start.setMinutes(0);
start.setSeconds(0);
start.setMilliseconds(0);