我试图计算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格式和日期类型
谢谢
答案 0 :(得分:0)
在mongo shell中运行以下管道应该会给你正确的结果:
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()
其中等效的mGo表达式(未经测试):
{{1}}