Mongodb 如何从Mongoose中的单个选择创建多个组?

Mongodb 如何从Mongoose中的单个选择创建多个组?,mongodb,mongoose,Mongodb,Mongoose,我想从事件集合中选择具有特定类型的所有事件,然后使用单个选择返回两个不同的组 例如,我目前有以下两种选择: const sessions = await Event.aggregate([ { $match: { isAdmin: { $ne: true } } }, { $group: { _id: '$sessionId' } } ]); const users = await Event.aggregate([ {

我想从事件集合中选择具有特定类型的所有事件,然后使用单个选择返回两个不同的组

例如,我目前有以下两种选择:

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
}
通过使用单个查询

提前谢谢

您可以使用聚合管道,它将提供在单个阶段中创建多维数据的功能。例如:

const sessions = await Event.aggregate([
  {
    $match: {
      isAdmin: { $ne: true }
    }
  }, {
    $facet: {
        sessions: [{
            $sortByCount: "$sessionId"
        }],
        users: [{
            $sortByCount: "$userId"
        }]
    }
}
]);

谢谢你的回复。我会在几天后回复,并会让你知道进展如何。