Я просмотрел несколько похожих вопросов/ответов, например. this one, но я не могу решить свой случай.Объединение MongoDB с несколькими ключами
У меня есть коллекция под названием output
с документами вида
{
"_id" : ObjectId("55e06ac3cd8a52ac141012f2"),
"Date" : ISODate("2010-11-02T00:00:00Z"),
"output" : 0,
"region" : "Gotham"
}
Эти документы охватывают несколько лет и регионы, я пытаюсь запустить агрегат, чтобы получить разбивку общего объема производства, в регионе, в год. Если я игнорирую год я могу получить первую часть с помощью этого
output.aggregate(
[
{ "$group": {
"_id": { region: "$region"},
"output": { "$sum": "$output" }
}}
],
function(err,results) {
console.log(results);
db.close();
}
);
, который дает мне
[ { _id: { region: 'Gotham' }, output: 2115715 },
{ _id: { region: 'London' }, output: 6799038 },
{ _id: { region: 'Tokyo' }, output: 8744809 }
но выход здесь через несколько лет, я хочу, с разбивкой в год.
Я попытался следующие, но это не работает
output.aggregate(
[
{
$project : {
year: {
$year: "$Date"
}
}
},
{
"$group": {
"_id": {
region: "$region",
year: ""$year
},
"output": { "$sum": "$output" }
}
}
],
function(err,results) {
console.log(results);
db.close();
}
);
это результаты в
[ { _id: { year: 2015 }, output: 0 },
{ _id: { year: 2014 }, output: 0 },
{ _id: { year: 2013 }, output: 0 },
{ _id: { year: 2012 }, output: 0 },
{ _id: { year: 2009 }, output: 0 },
{ _id: { year: 2008 }, output: 0 },
{ _id: { year: 2011 }, output: 0 },
{ _id: { year: 2010 }, output: 0 } ]
Что вы подразумеваете под * "не работает" *? – GolfWolf
Возможно ли, что он терпит неудачу из-за неправильного цитирования '$ year'? – GolfWolf
Обновленный вопрос, чтобы показать, почему он «не работает» –