MongoDB / Node.JS: получить сумму значений поля за определенный год - PullRequest
0 голосов
/ 10 апреля 2020

В настоящее время я тестирую базу данных 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);
});

но я не вывел правильные значения. Может, кто-нибудь подскажет, есть ли какие-либо изменения, которые я должен внести в этот запрос, чтобы получить правильный результат?

Спасибо за ваше время.

...