@Denis1111

Почему в ISOdate первый день месяца это последний день предыдущего?

Я пытаюсь сделать агрегацию в mongoose. Моя задача сгруппировать документы(числа) по месяцам, и проблема в том, что mongodb почему-то кладёт 1 число текущего месяца в объект предыдущего. То есть, если есть отчёт за 1 число этого месяца, то в ISO формате это 31 число предыдущего месяца, а этот документ должен входить в массив текущего месяца, а не прошлого. Такая же проблема и с первым днём след. месяца, который группируется в текущий месяц. Мне приходится постоянно делать проверки, что предоставляет мне неудобство. Есть ли какие-то способы решить данную проблему?

await Table.aggregate([
      {
        $match: {
          date: {$ne: null}
        }
      },
      {
        $group: {
          _id: {
            month: { $month: '$date' } 
          },
          doc: { $push: "$$ROOT" },
          count: { $sum: 1 }
        }
      },
      {
        $sort: {
          '_id.month': -1
        }
      }
    ]).exec();


Output:
[ { _id: { month: 8 },
    doc: [ [Object], [Object], [Object], [Object], [Object] ],
    count: 5 },
  { _id: { month: 7 },
    doc:
     [ [Object],
       [Object],
       [Object],
       [Object],
       [Object],
       [Object],
       [Object],
       [Object],
       [Object],
       [Object],
       [Object],
       [Object],
       [Object],
       [Object],
       [Object],
       [Object],
       [Object],
       [Object],
       [Object],
       [Object],
       [Object],
       [Object],
       [Object],
       [Object],
       [Object],
       [Object],
       [Object],
       [Object],
       [Object],
       [Object],
       [Object] ],
    count: 31 },
  { _id: { month: 6 }, doc: [ [Object] ], count: 1 } ]


6 месяца быть не должно, это { _id: { month: 6 }, doc: [ [Object] ], count: 1 } 1 число 7 месяца, а
{ _id: { month: 7 },
doc:
[ [Object], первый докумен 7 месяца это 1 число след.(8-го месяца), это значит, что там должно быть 6, а не 5 документов.
  • Вопрос задан
  • 66 просмотров
Пригласить эксперта
Ответы на вопрос 1
alexbuki
@alexbuki
программист js
Скорее всего срабатывает локализация, нужно поставить таймзону
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
IWU Нижний Новгород
от 150 000 до 250 000 руб.
Сравни.ру Москва
от 150 000 руб.
22 авг. 2019, в 04:28
50 руб./за проект
22 авг. 2019, в 02:23
60000 руб./за проект
22 авг. 2019, в 02:15
5000 руб./за проект