SDK数据库 Aggregate划分记录


当前第2页 返回上一页

output 可选,用以决定输出记录除了 _id 外还要包含哪些字段,各个字段的值必须用累加器表达式指定。当 output 指定时,默认的 count 是不会被默认输出的,必须手动指定:

output: {
  count: $.sum(1),
  ...
  <outputN>: <accumulator expr>
}

在以下情况中,输出的分组可能会小于给定的组数:

  • 输入记录数少于分组数
  • groupBy 计算得到的唯一值少于分组数
  • granularity 的间距少于分组数
  • granularity 不够精细以至于不能平均分配到各组

granularity 详细说明

granularity 用于保证边界值属于一个给定的数字序列。

Renard 序列

Renard 序列是以 10 的 5 / 10 / 20 / 40 / 80 次方根来推导的、在 1.0 到 10.0 (如果是 R80 则是 10.3) 之间的数字序列。

设置 granularity 为 R5 / R10 / R20 / R40 / R80 就把边界值限定在序列内。如果 groupBy 的值不在 1.0 到 10.0 (如果是 R80 则是 10.3) 内,则序列数字会自动乘以 10。

E 序列

E 序列是以 10 的 6 / 12 / 24 / 48 / 96 / 192 次方跟来推导的、带有一个特定误差的、在 1.0 到 10.0 之间的数字序列。

1-2-5 序列

1-2-5 序列 表现与三值 Renard 序列一样。

2的次方序列

由 2 的各次方组成的序列数字。

示例

假设集合 items 有如下记录:

{
  _id: "1",
  price: 10.5
}
{
  _id: "2",
  price: 50.3
}
{
  _id: "3",
  price: 20.8
}
{
  _id: "4",
  price: 80.2
}
{
  _id: "5",
  price: 200.3
}

对上述记录进行自动分组,分成三组:

const $ = db.command.aggregate
db.collection('items').aggregate()
  .bucket({
    groupBy: '$price',
    buckets: 3,
  })
  .end()

返回结果如下:

{
  "_id": {
    "min": 10.5,
    "max": 50.3
  },
  "count": 2
}
{
  "_id": {
    "min": 50.3,
    "max": 200.3
  },
  "count": 2
}
{
  "_id": {
    "min": 200.3,
    "max": 200.3
  },
  "count": 1
}



标签:微信小程序

返回前面的内容

相关阅读 >>

微信小程序api 录音-停止录音

微信小程序api wifi

微信小程序api 设置置顶信息

微信小程序 运力方使用onaddorder

微信小程序api 音视频合成-创建处理容器

微信小程序 wxml

微信小程序 广告数据源报表查询

微信小程序 拓展接口

微信小程序 页面路由

微信小程序开放数据 ad

更多相关阅读请进入《微信小程序》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...