我有一个聚合来从"分享"的集合中提取指标。动作。这些指标按日和平台(twitter,pintrest等)分组。除了在$project
阶段格式化输出之外,每个阶段都能正常工作,我似乎无法在输出中调用platform
字符串。我仍然在_id中看到它,但是我无法将它投射到其他领域。
汇总如下:
{
$unwind: "$platforms"
},
{
$project: {
day: {$dayOfMonth: "$created_at"},
month: {$month: "$created_at"},
year: {$year: "$created_at"},
platforms: 1
}
},
{
$group: {
_id: {
platorms: "$platforms",
day: "$day",
month: "$month",
year: "$year"
},
count: {$sum: 1}
}
},
{
$project: {
day: "$_id.day",
month: "$_id.month",
year: "$_id.year",
platform: "$_id.platforms",
count: 1
}
}
以下输出为:
{
"result" : [
{
"_id" : {
"platorms" : "EMAIL",
"day" : 28,
"month" : 4,
"year" : 2015
},
"count" : 1,
"day" : 28,
"month" : 4,
"year" : 2015
},
{
"_id" : {
"platorms" : "EMAIL",
"day" : 27,
"month" : 4,
"year" : 2015
},
"count" : 10,
"day" : 27,
"month" : 4,
"year" : 2015
},
{
"_id" : {
"platorms" : "SMS",
"day" : 27,
"month" : 4,
"year" : 2015
},
"count" : 1,
"day" : 27,
"month" : 4,
"year" : 2015
},
{
"_id" : {
"platorms" : "FACEBOOK",
"day" : 27,
"month" : 4,
"year" : 2015
},
"count" : 1,
"day" : 27,
"month" : 4,
"year" : 2015
}, ...
日,月和年的整数项目很好,但平台没有。
答案 0 :(得分:1)
这是因为在$group
阶段,您的复合_id
带有platorms: "$platforms"
(字段名称中缺少f
)并且您正在预测$_id.platforms
您的上一个$project
阶段,由于此类字段不存在,您将无法获得任何结果。您还可以使用_id
排除_id: 0
字段。
将您的$group
阶段更改为:
{
$group: {
_id: {
platforms: "$platforms",
day: "$day",
month: "$month",
year: "$year"
},
count: {$sum: 1}
}
}