SDK数据库 Aggregate划分输入数据


当前第2页 返回上一页

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

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

使用 bucket 需要满足以下至少一个条件,否则会抛出错误:

  • 每一个输入记录应用 groupBy 表达式获取的值都必须是一个在 boundaries 内的值
  • 指定一个 default 值,该值在 boundaries 以外,或与 boundaries 元素的值不同的类型。

示例

假设集合 items 有如下记录:

{
  _id: "1",
  price: 10
}
{
  _id: "2",
  price: 50
}
{
  _id: "3",
  price: 20
}
{
  _id: "4",
  price: 80
}
{
  _id: "5",
  price: 200
}

对上述记录进行分组,将 [0, 50) 分为一组,[50, 100) 分为一组,其他分为一组:

const $ = db.command.aggregate
db.collection('items').aggregate()
  .bucket({
    groupBy: '$price',
    boundaries: [0, 50, 100],
    default: 'other',
    output: {
      count: $.sum(1),
      ids: $.push('$_id')
    }
  })
  .end()

返回结果如下:

[
  {
    "_id": 0,
    "count": 2,
    "ids": [
      "1",
      "3"
    ]
  },
  {
    "_id": 50,
    "count": 2,
    "ids": [
      "2",
      "4"
    ]
  },
  {
    "_id": "other",
    "count": 22,
    "ids": [
      "5"
    ]
  }
]



标签:微信小程序

返回前面的内容

相关阅读 >>

微信小程序api 富文本

微信小程序云开发服务端数据库api update

微信小程序 小程序搜索-优化指南

微信小程序 条码二维码识别api

微信小程序工具 下载地址

性能

微信小程序 即时配送接口(商家查看)-联系我们

微信小程序云开发 支付方式

微信小程序云开发api 在集合上新增记录

微信小程序 组件模板和样式

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




打赏

取消

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

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

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

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

评论

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