【发布时间】:2015-11-14 10:06:28
【问题描述】:
从存储带有时间戳的数据的 MongoDB 集合中,我需要每小时返回一条记录。
到目前为止,我已经成功地选择了两个日期之间的记录集,但是我不知道如何在$group 子句中构建我需要的每小时记录。
var myName = "CollectionName"
//schema for mongoose
var mySchema = new Schema({
dt: Date,
value: Number
});
var myDB = mongoose.createConnection('mongodb://localhost:27017/MYDB');
myDBObj = myDB.model(myName, evalSchema, myName);
此聚合调用中的匹配工作正常,$hour 为一天中的每个小时创建一条记录.. 但我不知道如何重新创建完整日期并收到错误 "unknown group operator $avg" .. .
myDBObj.aggregate([
{
$match: { "dt": { $gt: new Date("October 13, 2010 12:00:00"), $lt: new Date("November 13, 2010 12:00:00") } }
},{
$group: {
"_id": { "dt": { "$hour": "$dt" } , "price": { "$avg": "$price" }}
}], function (err, data) { if (err) { return next(err); } res.json(data); });
我想我需要使用$dayOfYear,因此每天每个小时都有不同的记录,并在某处包含new Date() ...
有人可以帮我正确地做到这一点吗?任何帮助表示赞赏。
【问题讨论】:
标签: mongodb mongoose mongodb-query aggregation-framework