Добавление и подсчет полей с помощью Aggregation Pipeline - Mongo - PullRequest
0 голосов
/ 05 мая 2019

У меня есть набор данных:

Branch   Status   Product_Category   Number_Of_Clients   Amount
----------------------------------------------------------------
1        Ongoing       Product1           20               500
2        Not_Started   Product2           30               600     

Существуют сотни филиалов, несколько типов статуса, 6 категорий товаров.

Что мне нужно сделать, так это для каждой ветви, сгруппировать каждый тип «Product_Category», подсчитать количество различных «Status», сложить «Number_Of_Clientes» и добавить все «Amount».

Используя конвейер агрегации на Compass, я сначала попытался сгруппировать по веткам:

{
  _id: '$Branch',
  set_branch: {
    $addToSet: '$_id'
  },
  count_branch_documents: {
    $sum: 1
  }
}

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

Я пробовал группировать так же, как и $count и $sum, но я не получаю то, что хочу.

Мой идеальный вывод будет выглядеть примерно так:

Branch: 1
   Count_Branches: 2
Product_Category: 

   Product: Product1
      Status: 
         Ongoing: 2
         Not_Started: 5
      Total_Number_Of_Clients: 7
      Total_Amount: 500

   Product: Product2
      Status: 
         Ongoing: 3
         Not_Started: 2
      Total_Number_Of_Clients: 5
      Total_Amount: 600

Моя конечная цель - перевести это в другую коллекцию.

Любая помощь очень ценится!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...