mogodb查询-将list字段数据进行转换(统计个数, 拆分成一个个记录)

mogodb查询-将list字段数据进行转换(统计个数, 拆分成一个个记录)

使用aggregate, $unwind, $project, $group, $match, $size

$unwind

解析list字段

$project

重构表格

$group

分组

$match

过滤条件

$size

统计list字段中的个数, 如果是查询条件则是查询指定list字段个数的记录

使用方式

  db.databaseName.aggregate(
    { $unwind: '$list字段名'},
    { $match: {}},
    { $project: 
      {
        '自定义字段名': '$字段名(.字段名)', // 用自定义名称显示指定字段
        '字段名': 1, // 要显示的字段,
        'subNum': {$size: '$list字段'} // 当前例子不与$unwind同用
      }
    },
    { $group: 
      {
        _id: null // null就是不分组
        total: {$sum: '$subNum'}  // $subNum指的是要统计的数字字段, 当前例子指的是重构的表格中的subNum字段, 当前例子不与$unwind同用
      }
    }
  )

统计个数

  db.databaseName.aggregate(
    { $match: {}},
    { $project: 
      {
        '自定义字段名': '$字段名(.字段名)', // 用自定义名称显示指定字段
        '字段名': 1, // 要显示的字段,
        'subNum': {$size: '$list字段'} // 当前例子不与$unwind同用
      }
    }
  )

统计总数

  db.databaseName.aggregate(
    { $match: {}},
    { $project: 
      {
        '自定义字段名': '$字段名(.字段名)', // 用自定义名称显示指定字段
        '字段名': 1, // 要显示的字段,
        'subNum': {$size: '$list字段'} // 当前例子不与$unwind同用
      }
    },
    { $group: 
      {
        _id: null // null就是不分组
        total: {$sum: '$subNum'}  // $subNum指的是要统计的数字字段, 当前例子指的是重构的表格中的subNum字段, 当前例子不与$unwind同用
      }
    }
  )

将list拆分成一个个记录

db.databaseName.aggregate(
    { $unwind: '$list字段名'},
    { $match: {}},
    { $project: 
      {
        '自定义字段名': '$字段名(.字段名)', // 用自定义名称显示指定字段
        '字段名': 1, // 要显示的字段,
      }
    }
  )
posted @ 2022-02-14 17:04  黒马  阅读(130)  评论(0)    收藏  举报