Mongodb聚合时间序列数据

时间:2014-02-21 20:57:25

标签: mongodb time-series

我有一个时间序列数据集,里面有几十万条记录。我正在尝试在mongo中创建聚合查询,以便在平均价格的同时对这些数据进行分组。

理想情况下,我希望10分钟间隔(600000毫秒)和平均价格。我不太确定如何从我所处的位置继续进行。

数据〜几十万条记录:

  {
    "time" : 1391485215000,
    "price" : "0.00133355",
    }

query = [
    {   
        "$project": {
            "_id":"$_id",
            "price":"$price",
            "time": {
                xxxx
            }
        }
    },
    {   
        "$group": {xxxx}
    }
]

1 个答案:

答案 0 :(得分:3)

所以看起来我的架构中存在一个根本性的缺陷。我使用了一个纪元时间戳而不是mongo的Date类型,以及将其他数字存储为字符串而不是双精度数。我尝试了一些解决方法,但看起来你不能使用内置的聚合函数,除非它们的类型正确。

    $project: {
        year: { $year: '$time'},
        month: { $month: '$time'},
        day: { $dayOfMonth: '$time'},
        hour: { $hour: '$time'},
        price: 1,
        total: 1,
        amount: 1
    }
},
{
    $group : {
        _id: { year: '$year', month: '$month', day: '$day', hour: '$hour' },
        price:{
            $avg: "$price"
        },
        high:{
            $max: "$price"
        },
        low:{
            $min: "$price"
        },
        amount:{
            $sum: "$amount"
        },
        total:{
            $sum: "$total"
        }
    }