Как создать несколько групп из одного выбора в пн goose? - PullRequest
0 голосов
/ 04 мая 2020

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

Например, в настоящее время у меня есть следующие 2 выбора:

const sessions = await Event.aggregate([
  {
    $match: {
      isAdmin: { $ne: true }
    }
  }, {
    $group: {
      _id: '$sessionId'
    }
  }
]);

const users = await Event.aggregate([
  {
    $match: {
      isAdmin: { $ne: true }
    }
  }, {
    $group: {
      _id: '$userId'
    }
  }
]);

Я бы хотел получить конечный результат:

{
  numberOfSessions: sessions.length,
  numberOfUsers: users.length
}

С помощью одного запроса.

Заранее спасибо!

1 Ответ

1 голос
/ 04 мая 2020

Вы можете использовать фасет конвейер агрегации, который обеспечит возможность создания многомерных данных за один этап. Например:

const sessions = await Event.aggregate([
  {
    $match: {
      isAdmin: { $ne: true }
    }
  }, {
    $facet: {
        sessions: [{
            $sortByCount: "$sessionId"
        }],
        users: [{
            $sortByCount: "$userId"
        }]
    }
}
]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...