我使用了mongoose和moment模块 需要查询出occur_time end_time时间区间和 from to 时间区间有交集的RiskEvent, 其中end_time是model的virtual属性,根据两个属性计算出来的, 不知下面的查询对不对,运行查询不出结果, node新手,还不会调试。。。 另外怎么提高查询速度?这个索引该怎么建,我主要是根据** 给定的时间区间 和 bussiness ** 查询
** /model/risk_event.js **
var RiskEventSchema = new Schema({
occur_time: {type: Date},
duration_time: {type: Number},
bussiness: {type: String},
comment: {type: String}
});
RiskEventSchema.virtual('end_time').get(function(){
return moment(this.occur_time).add('minutes', this.duration_time);
});
RiskEventSchema.index({occur_time: 1});
mongoose.model('RiskEvent', RiskEventSchema);
** /proxy/risk_events.js **
exports.getRiskEventsByOccurTime = function(from, to, callback){
RiskEvent.find({"$or": [{occur_time: {"$lte": moment(from, 'YYYY-MM-DD')},
end_time: {"$gt": moment(from, 'YYYY-MM-DD')}},
{occur_time: {"$lt": moment(to, 'YYYY-MM-DD').add('days',1)},
end_time: {"$gt": moment(to, 'YYYY-MM-DD').add('days',1)}},
{occur_time: {"$gte": moment(from, 'YYYY-MM-DD')},
end_time: {"$lt": moment(to, 'YYYY-MM-DD').add('days',1)}}]}, callback);
};