前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MongoDB脚本:集合中字段数据大小的分位数统计

MongoDB脚本:集合中字段数据大小的分位数统计

作者头像
dhyuan
发布2022-11-08 12:52:27
1.6K0
发布2022-11-08 12:52:27
举报
文章被收录于专栏:响应式编程响应式编程

日常开发中,有时需要了解数据分布的一些特点,比如这个colllection里documents的平均大小、全部大小等,来调整程序的设计。 对于系统中已经存在大量数据的情况,这种提前分析数据分布模式的工作套路(最佳实践)可以帮助我们有的放矢的进行设计,避免不必要的过度设计或者进行更细致的设计。

如果想获得某个collection相关的各种存储统计信息,可以使用 collStats。参见:https://www.mongodb.com/docs/v4.4/reference/operator/aggregation/collStats/#mongodb-pipeline-pipe.-collStats。

如果想获取总计、平均等简单的统计信息,可以参考这里:https://www.mongodb.com/docs/manual/core/aggregation-pipeline/#std-label-aggregation-pipeline。

下面的命令可以显示 COLLECTION 中满足条件status=’active’,字段FIELD_A, FIELD_B的数据大小的quantile analysis。实际使用时用自己的集合名、字段名以及过滤条件进行替换即可。

代码语言:javascript
复制
//最大的Top10和百分比分布。
db.COLLECTION.aggregate([
  { $match: { "status": 'active' } },
  { $project: { _id: 1, FIELD_A: 1, FIELD_B: 1} },
  { $project: { documentSize: { $sum: { $bsonSize: "$$ROOT" } } } },
  { $sort: { documentSize: 1 } },
  { $group: { '_id': null, 'value': { '$push': '$documentSize' } } },
  { $project: { _id: 0, 
      "Top1": { $arrayElemAt: ["$value", { $floor: { $add: [-1, { $size: "$value" }] } } ] },
      "Top2": { $arrayElemAt: ["$value", { $floor: { $add: [-2, { $size: "$value" }] } } ] },
      "Top3": { $arrayElemAt: ["$value", { $floor: { $add: [-4, { $size: "$value" }] } } ] },
      "Top4": { $arrayElemAt: ["$value", { $floor: { $add: [-5, { $size: "$value" }] } } ] },
      "Top5": { $arrayElemAt: ["$value", { $floor: { $add: [-6, { $size: "$value" }] } } ] },
      "Top6": { $arrayElemAt: ["$value", { $floor: { $add: [-7, { $size: "$value" }] } } ] },
      "Top7": { $arrayElemAt: ["$value", { $floor: { $add: [-7, { $size: "$value" }] } } ] },
      "Top8": { $arrayElemAt: ["$value", { $floor: { $add: [-8, { $size: "$value" }] } } ] },
      "Top9": { $arrayElemAt: ["$value", { $floor: { $add: [-9, { $size: "$value" }] } } ] },
      "Top10": { $arrayElemAt: ["$value", { $floor: { $add: [-10, { $size: "$value" }] } } ] },
      "99-9%": { $arrayElemAt: ["$value", { $floor: { $multiply: [0.999, { $size: "$value" }] } } ] },
      "99%": { $arrayElemAt: ["$value", { $floor: { $multiply: [0.99, { $size: "$value" }] } } ] },
      "95%": { $arrayElemAt: ["$value", { $floor: { $multiply: [0.95, { $size: "$value" }] } } ] },
      "90%": { $arrayElemAt: ["$value", { $floor: { $multiply: [0.90, { $size: "$value" }] } } ] },
      "50%": { $arrayElemAt: ["$value", { $floor: { $multiply: [0.50, { $size: "$value" }] } } ] },
      "25%": { $arrayElemAt: ["$value", { $floor: { $multiply: [0.25, { $size: "$value" }] } } ] },
    } },
  ]);
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-09-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 响应式编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MongoDB
腾讯云数据库 MongoDB(TencentDB for MongoDB)是腾讯云基于全球广受欢迎的 MongoDB 打造的高性能 NoSQL 数据库,100%完全兼容 MongoDB 协议,支持跨文档事务,提供稳定丰富的监控管理,弹性可扩展、自动容灾,适用于文档型数据库场景,您无需自建灾备体系及控制管理系统。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档