MongoDB按文档密钥汇总数据

时间:2015-06-10 08:22:43

标签: mongodb

我有一个文件,其中包含汇总数据,每天的日期由密钥({ 'Y2015': { 'M04': { 'D18': 100, 'D19': 200 } }, 'order_id': 'VjprK', 'user_id': '777' } { 'Y2015': { 'M04': { 'D18': 100, 'D19': 20 } }, 'order_id': 'LaOPX', 'user_id': '777' } { 'Y2015': { 'M04': { 'D18': 100, 'D19': 50 } }, 'order_id': 'cYwxf', 'user_id': '777' } )创建,形成日期:

数据

300

如何查询它以返回user_id = 777的{​​{1}}和2015-04-18的日期之和?

1 个答案:

答案 0 :(得分:0)

真的没什么:

db.junk.aggregate([
    { "$match": { "user_id": "777"  } },
    { "$group": { 
        "_id": "$user_id",
        "total": { "$sum": "$Y2015.M04.D18" }
    }}
])

它实际上不是一个"两个键"像你想的那样聚合。但实际上,因为您的数据是按日期这样构建的,所以只需要将路径映射到值,这将始终保持一致。只需删除$match以上的多个用户"。

这种结构的问题是聚合"多个日期"如果那是你在某个时候的意图,你可能应该修改它。