В настоящее время я тестирую базу данных mongodb с node.js / mon goose, который соответствует схеме ниже:
{
"assetID" : Number,
"dia" : ISODate("year-month-dayT00:00:00Z"),
"nIncs" : Number,
"p" : {
"h0" : [ ],
"h1" : [ ],
"h2" : [ ],
.
.
.
"h23" : [ ]
}
}
Я хотел бы запросить эту базу данных предпочтительно использовать структуру агрегации, чтобы получить общую сумму «nIncs» за данный год.
Пример:
{
"_id" : ObjectId("..."),
(...)
"dia" : ISODate("2020-03-18T00:00:00Z"),
"nIncs" : 1,
},
{
"_id" : ObjectId("..."),
(...)
"dia" : ISODate("2020-03-18T00:00:00Z"),
"nIncs" : 7,
}
//OUTPUT: Total sum of "nIncs" for 2020 is 8
Я провел некоторое исследование здесь и в официальные документы и добрались до этого запроса
Incident.aggregate([ {$group: {_id: {year: {$year: "$dia"}}, total: {$sum: "$nIncs"}}}], function(err, result){
console.log(result);
});
но я не вывел правильные значения. Может, кто-нибудь подскажет, есть ли какие-либо изменения, которые я должен внести в этот запрос, чтобы получить правильный результат?
Спасибо за ваше время.