2016-03-08 182 views
1

我试图计算15分钟的平均数据速度。我得到的结果,它包含平均速度,但不知道它是正确的,并为15分钟集,也minutes为零。按时间间隔15分钟的聚合组

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", 
     }, 
    }, 
} 

任何人做了类似的事情或可以帮助吗?

编辑:$时间戳字段是ISODate格式,日期型

谢谢

+0

这是ISODate(2016-03-01T17:14:00.000Z) – user2343398

+0

看来你从这个问题得到的代码,但你误读了'$分钟'这是一个实际上聚合算子,你已经把它解释为一个字段。所以这里的BSON与形式不匹配,为什么你没有得到正确的结果。 –

+0

我从“重复”问题,一些其他来源和mongodb手册中获得代码 - 所以我用所有这些创建了我自己的版本:)。 – user2343398

回答

0

运行在蒙戈外壳下面的管道应该给你正确的结果:

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() 
+1

注意到代码的来源缺乏引用。另一个问题,几乎相同的标题:[“在MongoDb 15分钟的时间间隔组结果”](http://stackoverflow.com/questions/26814427/group-result-by-15-minutes-time-interval- imongodb) –

+1

note:'{“$ mod”:[{“$ minute”:“$ timestamp”,15}]}'是'bson.M {“$ mod”:[] interface {} {bson。 M {“$ minute”:“$ timestamp”,},5,},},'golang – user2343398