Я использую 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,
}
]
}
Я искал все в Переполнении стека, попробуйте использовать 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
}
]
}
]
, пожалуйста, помогите мне или подскажите, какие этапы агрегации должны использовать в этом случае