Как уменьшить количество запросов на агрегацию с помощью mongoDB - PullRequest
1 голос
/ 03 апреля 2020

Мне сложно найти правильный заголовок для этого вопроса (открыт для предложений)

Я занимаюсь разработкой страницы статистики, которая сравнивает различные данные друг с другом.

Например, у меня есть запрос, который рассчитывает распределение по возрасту в зависимости от пола человека.

{
  $bucket: {
    groupBy : "$age",
    boundaries:[12,13,14,15,16,17],
    default:"other",
    output : {
      "male" : {$sum : {$cond: { if: { $eq: [ "$gender", "male" ] }, then: 1, else: 0 }}},
      "female" : {$sum : {$cond: { if: { $eq: [ "$gender", "female" ] }, then: 1, else: 0 }}}
    }
  }
}

В приведенном выше примере я хотел только возраст от 12 до 17 лет.

Это пример полученного результата:

[
{
"_id": 12,
"male": 0,
"female": 1
},
{
"_id": 14,
"male": 0,
"female": 1
},
{
"_id": 15,
"male": 1,
"female": 0
},
{
"_id": 16,
"male": 2,
"female": 0
},
{
"_id": "other",
"male": 1,
"female": 0
}
]

Когда я буду итерации по этому запросу мои строки будут пол, а столбцы возраст.

Но что, если я хочу выполнить итерацию в противоположном / обратном порядке (строки - это возраст, а столбцы - пол)

  1. Это манипуляция, которую я могу выполнять на стороне клиента с помощью магии. c итерационные трюки
  2. Я должен также создать отдельный запрос агрегации для случая
  3. Мой запрос разработан неправильно, и у меня может быть такой, который позволил бы мне легко переключать поля строк / столбцов

Спасибо за любые предложения

...