【发布时间】:2016-10-22 21:38:04
【问题描述】:
我有以下格式的记录。
//One parent record
{
"_id" : "someDocID",
"title" : "some title",
"analytics" : [
{
"_id" : "analyticsID1",
"timeSpent" : [
{
"time" : 14,
"pageNo" : 1
},
{
"time" : 4,
"pageNo" : 2
},
{
"time" : 3,
"pageNo" : 1
},
{
"time" : 1,
"pageNo" : 2
}
]
},
{
"_id" : "analyticsID2",
"timeSpent" : [
{
"time" : 12,
"pageNo" : 10
},
{
"time" : 15,
"pageNo" : 11
},
{
"time" : 26,
"pageNo" : 12
},
{
"time" : 13,
"pageNo" : 11
},
{
"time" : 17,
"pageNo" : 10
},
{
"time" : 30,
"pageNo" : 11
}
]
}
]
}
“pageNo”字段包含重复值。我需要通过添加各自的“时间”来对 pageNo 字段进行分组。
这是我需要的输出。 (在分析的“$unwind”操作之后)
//Two records after "$unwind" on analytics
{
"_id" : "someDocID",
"title" : "some title",
"analytics" : {
"_id" : "analyticsID1",
"timeSpent" : [
{
"time" : 17, //14+3
"pageNo" : 1
},
{
"time" : 5, //4+1
"pageNo" : 2
}
]
}
}
{
"_id" : "someDocID",
"title" : "some title",
"analytics" : {
"_id" : "analyticsID2",
"timeSpent" : [
{
"time" : 29, //12+17
"pageNo" : 10
},
{
"time" : 58, //15+13+30
"pageNo" : 11
},
{
"time" : 26,
"pageNo" : 12
}
]
}
}
我尝试了聚合、组、展开和项目的各种组合,但仍然无法达到目标,非常感谢任何建议。
【问题讨论】:
-
你想以什么结尾?对于每个分析 ID,您是尝试将“时间”与“pageNo”相加,还是将“时间”与“pageNo”相加?
-
我想用“pageNo”对“时间”求和。
-
我想要这样的东西。 analyticsID1 -> { timeSpent : [ { time : 10, pageNo: 1 },..] }, analyticsID2 -> { timeSpent : [ { time : 20, pageNo: 1 },..] }
标签: mongodb mongodb-query aggregation-framework mongodb-aggregation