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统计数目。