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 视频解码器-videodecoder实例

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

体验微信小程序

微信小程序 画布

微信小程序 运力方使用ongetquota

微信小程序内容组件 rich-text

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




打赏

取消

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

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

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

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

评论

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