按时间间隔 15 分钟聚合组
aggregate group by time of intervals of 15 minutes
我正在尝试计算 15 分钟的平均数据传输速度。我得到了结果,它包含平均速度,但不确定它是否正确,对于 15 分钟的设置,minutes
也为零。
o3 := bson.M{
"$group": bson.M{
"_id": bson.M{
"minute": bson.M{
"$subtract": []interface{}{
"$timestamp",
bson.M{
"$mod": []interface{}{
"$minute",
15,
},
},
},
},
},
"averageSpeed": bson.M{
"$avg": "$speed",
},
},
}
有人做过类似的事情或可以提供帮助吗?
编辑:$timestamp 字段是 ISODate 格式和日期类型
谢谢
运行 mongo shell 中的以下管道应该会给您正确的结果:
pipeline = [
{
"$group": {
"_id": {
"year": { "$year": "$timestamp" },
"dayOfYear": { "$dayOfYear": "$timestamp" },
"minute_interval": {
"$subtract": [
{ "$minute": "$timestamp" },
{ "$mod": [{ "$minute": "$timestamp" }, 15] }
]
}
},
"averageSpeed": { "$avg": "$speed" }
}
}
]
db.collection.aggregate(pipeline)
其中等效的 mGo 表达式如下(未测试):
pipeline := []bson.D{
bson.M{
"$group": bson.M{
"_id": bson.M{
"year": bson.M{ "$year": "$timestamp" },
"dayOfYear": bson.M{ "$dayOfYear": "$timestamp" },
"minute_interval": bson.M{
"$subtract": []interface{}{
bson.M{ "$minute": "$timestamp" },
bson.M{ "$mod": []interface{}{ bson.M{ "$minute": "$timestamp" }, 15, }, } }
}
}
},
"averageSpeed": bson.M{ "$avg": "$speed" }
}
}
}
pipe := collection.Pipe(pipeline)
iter := pipe.Iter()
我正在尝试计算 15 分钟的平均数据传输速度。我得到了结果,它包含平均速度,但不确定它是否正确,对于 15 分钟的设置,minutes
也为零。
o3 := bson.M{
"$group": bson.M{
"_id": bson.M{
"minute": bson.M{
"$subtract": []interface{}{
"$timestamp",
bson.M{
"$mod": []interface{}{
"$minute",
15,
},
},
},
},
},
"averageSpeed": bson.M{
"$avg": "$speed",
},
},
}
有人做过类似的事情或可以提供帮助吗?
编辑:$timestamp 字段是 ISODate 格式和日期类型
谢谢
运行 mongo shell 中的以下管道应该会给您正确的结果:
pipeline = [
{
"$group": {
"_id": {
"year": { "$year": "$timestamp" },
"dayOfYear": { "$dayOfYear": "$timestamp" },
"minute_interval": {
"$subtract": [
{ "$minute": "$timestamp" },
{ "$mod": [{ "$minute": "$timestamp" }, 15] }
]
}
},
"averageSpeed": { "$avg": "$speed" }
}
}
]
db.collection.aggregate(pipeline)
其中等效的 mGo 表达式如下(未测试):
pipeline := []bson.D{
bson.M{
"$group": bson.M{
"_id": bson.M{
"year": bson.M{ "$year": "$timestamp" },
"dayOfYear": bson.M{ "$dayOfYear": "$timestamp" },
"minute_interval": bson.M{
"$subtract": []interface{}{
bson.M{ "$minute": "$timestamp" },
bson.M{ "$mod": []interface{}{ bson.M{ "$minute": "$timestamp" }, 15, }, } }
}
}
},
"averageSpeed": bson.M{ "$avg": "$speed" }
}
}
}
pipe := collection.Pipe(pipeline)
iter := pipe.Iter()