首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoDB聚合数据

MongoDB聚合数据
EN

Stack Overflow用户
提问于 2016-10-10 11:46:48
回答 1查看 80关注 0票数 0

我是蒙戈聚合的新手,我拥有这些数据。

代码语言:javascript
复制
{
"_id": {

        "$oid": "5654a8f0d487dd1434571a6e"
    },

    "ValidationDate": {
        "$date": "2015-11-24T13:06:19.363Z"
    },

    "DataRaw": " WL 00100100012015-08-28 02:44:17+0000+ 16.81 8.879  1084.00",

    "ReadingsAreValid": true,

    "locationID": " WL 001",

    "Readings": {

        "pH": {
            "value": 8.879
        },

        "SensoreDate": {
            "value": {
                "$date": "2015-08-28T02:44:17.000Z"
            }
        },

        "temperature": {
            "value": 16.81
        },

        "Conductivity": {
            "value": 1084
        }
    },
    "HMAC":"ecb98d73fcb34ce2c5bbcc9c1265c8ca939f639d791a1de0f6275e2d0d71a801"
}

我的目标是每隔两个小时计算一次平均温度,然后是每月、一年和一周。我试过各种各样的询问,但没有运气。这就是我迄今所尝试过的

代码语言:javascript
复制
data.aggregate([{"$unwind":"$Readings"}, 

{"$project":{"HourRecord":{"$hour":"Readings.SensoreDate.value"}, 

"YearRecord":{"$year":"$Readings.SensoreDate.value"}}},

{'$group' : {'_id' : "$locationID", 
'AverageTemp' : { '$avg' : '$Readings.temperature.value'}}}
])

我得到了这样一个空洞的结果

代码语言:javascript
复制
{u'ok': 1.0, u'waitedMS': 0L, u'result': [{u'AverageTemp': None, u'_id': None}]}

我尝试过其他几种组合,但仍然得到了空洞的结果。

以下查询返回每小时、每月等所需的结果,但如何将每隔两小时而不是一小时分组

代码语言:javascript
复制
 test_Agg.aggregate([{"$unwind":"$Readings"},
{"$project":{              "HourRecord": { "$hour":"$Readings.SensoreDate.value"},
                           "YearRecord": {"$year":"$Readings.SensoreDate.value"},
                           "MonthRecord": {"$month":"$Readings.SensoreDate.value"},
                           "locationID" : 1,
                           "Readings.pH.value":1,
                           'Readings.temperature.value' : 1}
},
{'$group' : {'_id' :"$HourRecord",
'AverageTemp' : { '$avg' : '$Readings.temperature.value'}}
}])
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-10 12:39:46

查询中的第二个管道$project没有预测后续管道中使用的所需值。因此,结果是空的。

所需的字段已添加到$project中。尝试下面的查询。

代码语言:javascript
复制
db.temperature.aggregate([{"$unwind":"$Readings"}, 
{"$project":{              "HourRecord": { "$hour":"$Readings.SensoreDate.value"}, 
                           "YearRecord": {"$year":"$Readings.SensoreDate.value"},
                           locationID : 1,
                           'Readings.temperature.value' : 1}
},
{'$group' : {'_id' : "$locationID", 
'AverageTemp' : { '$avg' : '$Readings.temperature.value'}}}                           
]);

post中提供的一个文档的输出:-

代码语言:javascript
复制
{
    "_id" : " WL 001",
    "AverageTemp" : 16.81
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39957551

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档