MongoDB Aggregate Query Group By And Count - PullRequest
0 голосов
/ 03 марта 2019

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

 {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'}
       ]
 }

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

{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
  }

Спасибо,

...