猿问

按 15 分钟间隔时间聚合组

我正在尝试计算 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",

        },

    },

}

有人做过类似的事情或可以提供帮助吗?


动漫人物
浏览 171回答 1
1回答

潇湘沐

在 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()
随时随地看视频慕课网APP

相关分类

Go
我要回答