利用Mongodb聚合(aggregate)来进行复杂查询的技巧

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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、数据值转换
  1. 字符串等转为Boolean值。
$project: {
  isError: {$eq: ['$state', 'error']}
}
  1. Boolean值转为数字1\0-1。
$project: {
  mistake: {$cmp: [false, '$isError']}
}

常用于$group前,将值转为数字1/0,在$group中利用$sum统计数目。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值