1、以多個key作爲唯一鍵,分組查詢
比如項目和主機地址(ip)有交叉關係,需要按ip和proj都不同的方式分組取出數據。
利用$group的_id對象分組,可以再用$project重命名。
db.Model.aggregate([
{
$group:{
_id: {
ip: '$ip',
proj: '$proj'
}
}
},
{
$project:{
ip: '$_id.ip',
proj: '$_id.proj'
}
}
]);
2、數據值轉換
- 字符串等轉爲Boolean值。
$project: {
isError: {$eq: ['$state', 'error']}
}
- Boolean值轉爲數字1\0-1。
$project: {
mistake: {$cmp: [false, '$isError']}
}
常用於$group前,將值轉爲數字1/0,在$group中利用$sum統計數目。