Skip to content

聚合查询


// 语法
db.集合名.aggregate([
  {管道: {表达式}}
])

//示例
db.user.aggregate([
  {
      $group: {
          _id: '$sex', // null 表示不分组
          sum: {$sum: '$age'} // 1表示统计数量count
      }
  },
  {
      $sort: {sum: -1} // 按求和降序
  }
])
// 语法
db.集合名.aggregate([
  {管道: {表达式}}
])

//示例
db.user.aggregate([
  {
      $group: {
          _id: '$sex', // null 表示不分组
          sum: {$sum: '$age'} // 1表示统计数量count
      }
  },
  {
      $sort: {sum: -1} // 按求和降序
  }
])

常用管道

  • $group 将集合中的文档分组,用于统计结果
  • $match 过滤数据,只输出符合条件的文档
  • $sort 聚合后进一步排序
  • $skip 聚合后进一步跳过文档数
  • $limit 聚合后进一步限制条数
  • $project 增加、删除、重命名字段、筛选指定字段
  • $lookup 引用其他集合的数据
// $lookup语法
db.order.aggregate([
    {
        $lookup: {
            from: 'order_item', // 关联的表名
            localFieId: 'order_id', // 关联的字段(主表)
            foreignFieId: 'order_id', // 关联的字段(关联表)
            as: 'items' // 关联后数据放到这个字段
        }
    }
])
// $lookup语法
db.order.aggregate([
    {
        $lookup: {
            from: 'order_item', // 关联的表名
            localFieId: 'order_id', // 关联的字段(主表)
            foreignFieId: 'order_id', // 关联的字段(关联表)
            as: 'items' // 关联后数据放到这个字段
        }
    }
])

常用表达式

  • $sum 求和 $sum:1同count表示统计
  • $avg 求平均
  • $min 最小值
  • $max 最大值

备案号:冀ICP备20015584号-2