我正在将mongodb用于nodejs服务器。使用聚合时遇到了一个问题。以下是我的设计文档
{
"app_id" : "a6e3a",
"ref" : "google.com",
"samples" : [
{
"num_visitor" : 2,
"spend" : 285,
},
{
"num_visitor" : 3,
"spend" : 236,
}
],
"location" : [
{
"country_code" : "DE",
"vis" : 1,
},
{
"country_code" : "DE",
"vis" : 1,
},
{
"country_code" : "US",
"vis" : 2,
},
{
"country_code" : "US",
"vis" : 1,
}
],
"device" : [
{
"type" : " isFireFox 64",
"tran" : 1,
},
{
"type" : " isFireFox 64",
"tran" : 1,
},
{
"device" : " isChrome isWebKit 71",
"tran" : 3,
}
]
}
我已经在Stack Overflow中进行了全部搜索,尝试使用mapReduce,但无法获得预期的结果,我希望按app_id进行分组,并按子数组位置分组,或者按字段和总和值分组设备。在这里,我的管道一直卡在这里
[ {
$match: {
ref: "google.com"
}
},
{
$project: {
_id: 0,
location: 1,
device: 1
}
},
{
$group: {
_id: "$location.country_code",
tags: { $sum: "$location.views" }
}
}
]
我的实际预期输出是
[
{
_id:"a6e3a",
total_visitor:5,
location:[
{
country_code:"DE",
vis:2
},
{
country_code:"US",
vis:3
}
],
device:[
{
type:"isFireFox 64",
tran:2
},
{
type:"isChrome isWebKit 71",
tran:2
}
]
}
]
在这种情况下,请帮助我或建议我使用什么聚合管道阶段