Условное раскручивание в агрегации MongoDb?
я пытаюсь выяснить, есть ли способ кодирования условного раскрутки в MongoDB 'Структура агрегации.
У меня есть команда агрегации, как это: я
models.Users.aggregate(
{ // SELECT
$project : { "sex" : 1,
"salesIndex":1
}
},
{ // WHERE
$match: {"salesIndex": {$gte: index}}
},
{ // GROUP BY y agregadores
$group: {
_id : "$sex",
sexCount : { $sum: 1 }
}
},
{ $sort: { sexCount: -1 } }
, function(err, dbres) {
(...)
});
Я хотел бы добавить дополнительный фильтр по отделам. Пользователь может находиться в одном или нескольких отделах, вот как это выглядит в БД:
пользователь _id sex salesIndex департаменты {[d1, d2, d3]}
Если бы я хотел искать пользователей в определенном отделе, я быd закодировать условие $ unwind и затем $ match по отделу. Однако я'Я хотел бы использовать одну и ту же команду агрегирования для обоих сценариев, что-то вроде этого:
models.Users.aggregate(
{ // SELECT
$project : { "sex" : 1,
"salesIndex":1
}
},
{ // WHERE
$match: {"salesIndex": {$gte: index}}
},
IF (filteringByDepartment){
$unwind departments here
$match by departmentId here
}
{ // GROUP BY y agregadores
$group: {
_id : "$sex",
sexCount : { $sum: 1 }
}
},
{ $sort: { sexCount: -1 } }
, function(err, dbres) {
(...)
});
Это вообще возможно, или мне нужно 2 команды агрегации?