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统计数目。
本文介绍了如何使用MongoDB的aggregate函数进行复杂查询,包括以多个键作为唯一键进行分组查询,以及如何进行数据值的转换,如将字符串转换为Boolean值和Boolean值转换为数字进行计数。通过这些技巧,可以更高效地处理和分析数据。
1117

被折叠的 条评论
为什么被折叠?



