MongoDB聚合查询$match不返回任何日期范围,为什么
MongoDB Aggregation Query $match returns nothing with date range, why?
我无法让以下MongoDB聚合查询返回结果。 它只返回一个空数组。 我相信这是因为它没有正确处理日期范围。 但是,当我PriceHourly.find({ date: { $lt: end, $gt: start }})
记录按预期返回时......
var start = moment.utc('03-02-2012').startOf('day');
var end = moment.utc('03-02-2012').add('days',1).startOf('day');
PriceHourly.aggregate([
{ $match: { date: { $gt: start, $lt: end } } },
{ $group: { _id: null, avgPrice: { $avg: '$price' } } }
], function(err, results){
console.log(err, results);
});
// Model
var PriceHourlySchema = new Schema({
created: {
type: Date,
default: Date.now
},
full_date: {
type: String,
required: true,
trim: true
},
day: {
type: String,
required: true,
trim: true
},
hour: {
type: String,
required: true,
trim: true
},
price: {
type: Number,
required: true
},
date: {
type: Date,
required: true
}
},
{
autoIndex: true
});
MongoDB聚合框架的$match不理解我提交的Moment Date对象。 $match似乎只适用于本机Javascript日期对象。 因此,如果您仍然想将 Moment.js 与 $match一起使用,只需使用 Moment 的 toDate()
方法将 Moment.js Date 对象转换为本机 Javascript Date 对象,如下所示:
var start = moment.utc(req.query.start).startOf('year').toDate();
var end = moment.utc(req.query.start).add('years',1).startOf('year').add('hours',1).toDate();
相关文章:
- 使用JavaScript日期的任何时间的时区偏移量
- 日期-时间范围指令字段未显示任何值
- 检查开始日期是否小于结束日期(不使用任何pluguin)
- JavaScript 中任何格式的日期正则表达式
- 为什么iOS上的Phonegap中的新日期不返回任何内容
- 角度输入[类型=日期].未显示任何值
- Javascript:如果列包含任何日期,则在 google 电子表格中移动行 (1/2/2015)
- 为什么本地化仅在单击日期或任何其他按钮后才会更改
- 是否有任何库可以识别任何格式的日期
- 使用jQuery或javascript转换日期格式(不使用任何lib)
- Regex:匹配日期和冒号之间的任何字符串
- 如何制作<输入类型=“;日期“>所有浏览器都支持吗?任何替代方案
- 如何检查数组中的任何日期是否在日期范围内
- Javascript日期没有任何意义
- Casperjs然后点击打开日期picker,但无法检索日历中的任何内容
- 转换任何日期插入到ISO格式没有时间戳在JavaScript
- 是否有任何javascript或jquery函数来确定字符串是数字还是日期
- 要显示数据的最后一周和任何两个日期之间的数据,我正在努力
- 任何时间js日期选择错误
- 为任何日期范围过滤JSON格式的数据