3
我想弄清楚是否有辦法在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) {
(...)
});
我想通過部門來添加一個可選的過濾器。用戶可以在一個或多個部門,在這裏是如何看起來像DB:
用戶 _id 性 salesIndex 部門{[D1,D2,D3]}
如果我想搜索特定部門的用戶,我會編寫一個$ 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聚集的命令?
這聽起來像一個金丹,不知道你會那樣做。謝謝! –
如果if的條件在文檔內部怎麼辦? –