MongoDB агрегирует запросы по группам и количеству

#mongodb #aggregate-functions

#mongodb #агрегатные функции

Вопрос:

У меня есть коллекция подписчиков:

  {id: ObjectId ('52dskf45f10dsd4775'), agencyCode: '4579520',
        listOfSubscriptions: [
        {name: 'william', CreatedAt: ISODate ('2019-01-02'), subscriptionType: 'smartphones'},
        {name: 'marianna', CreatedAt: ISODate ('2019-02-02'), subscriptionType: 'smartphones'},
        {name: 'Freewind', CreatedAt: ISODate ('2019-04-02'), subscriptionType: 'smartphones'}
       ]
 }
  

Коллекция агентства содержит следующие данные:

 {agencyCode: '4579520', BU: 'finances', company: ObjectId (' 445700500b24dsjdfm ')}
{agencyCode: '45007', BU: 'finances', company: ObjectId (' 445700500b24dsjdfm ')}
  

Тип подписки на коллекцию:

  {id:ObjectId ('5lkf81gf45005drkj') ,nameSubscription: 'intense',SubscriptionType: 'smartphones' }
 {id:ObjectId ('eb4512ezope780') ,nameSubscription: 'other',SubscriptionType: 'other' }
  

Я хочу продолжить с подписчиками по типу подписки.

Вот мой запрос mongodb:

  subscribers.aggregate(
    [
    {
        $lookup: {
          from: "agencys",
          localField: "agencyCode",
          foreignField: "agencyCode",
          as: "data_agency"
        }
      },
      { $unwind: "$data_agency" },
      { $unwind: "$listOfSubscriptions" },
      {
        $match: {
          $and: [
            { $agencyCode: '4579520' },
            { "data_agency.BU": 'finances' },
            { "data_agency.company": mongoose.Types.ObjectId('445700500b24dsjdfm') },

          ]
        }
      },
      {
        $group: {
          "_id": "$listOfSubscriptions.subscriptionType",
          countLines: { $sum: 1 },
        }
      },
]
  

результат моего запроса:

  {
    "_id": "smartphones",
     "countLines": 3
  }
  

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

 {
    "_id": "smartphones",
     "countLines": 3
  },
{
    "_id": "other",
     "countLines": 0
  }
  

Спасибо,

Комментарии:

1. Вы уверены, что в вашем запросе нет опечатки? Я вижу "data_agency.BU": 'fiances' вместо финансов

2. Она верна, я обманут в «data_agency.BU».

3. Получаете ли вы ожидаемые результаты?

4. У меня был такой результат { "_id": "smartphones", "countLines": 3 }