Передача значения для доступа к объекту - Mongodb - PullRequest
0 голосов
/ 20 июня 2020

У меня есть номер в $ _id после завершения $ group.

Но мне нужно это значение для доступа к объекту и возврата вашей строки.

const week = {
  1: 'Domingo',
  2: 'Segunda',
  3: 'Terça',
  4: 'Quarta',
  5: 'Quinta',
  6: 'Sexta',
  7: 'Sábado',
}

db.trips.aggregate(
  [
    {
      $group: {
        _id: {
          $dayOfWeek: "$startTime"
        },
        qtd: {
          $sum: 1
        }
      }
    },
    
    {
      $project: {
        diaDaSemana: week["$_id"],
        total: "$qtd",
      }
    }
  ]
);

Я столько раз пробовал, но не работает.

Спасибо за помощь.

1 Ответ

1 голос
/ 20 июня 2020

Конвейер агрегации не разыменовывает объекты так же, как javascript.

Если вы передаете дни в виде массива, на этапе $project вы можете использовать $ arrayElemAt , чтобы получить соответствующую строку.

Вам понадобится нулевой элемент для смещения индекса, чтобы «Domin go» находился в индексе 1:

const week = [
  'Nada',
  'Domingo',
  'Segunda',
  'Terça',
  'Quarta',
  'Quinta',
  'Sexta',
  'Sábado',
]

Затем в стадия $project:

    diaDaSemana: {$arrayElemAt: [week, "$_id"]},
...