我有一个文件,其中包含汇总数据,每天的日期由密钥({
'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
的日期之和?
答案 0 :(得分:0)
真的没什么:
db.junk.aggregate([
{ "$match": { "user_id": "777" } },
{ "$group": {
"_id": "$user_id",
"total": { "$sum": "$Y2015.M04.D18" }
}}
])
它实际上不是一个"两个键"像你想的那样聚合。但实际上,因为您的数据是按日期这样构建的,所以只需要将路径映射到值,这将始终保持一致。只需删除$match
以上的多个用户"。
这种结构的问题是聚合"多个日期"如果那是你在某个时候的意图,你可能应该修改它。