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"
}]
}
}
]);
谢谢你的回复。我会在几天后回复,并会让你知道进展如何。