评论

【笔记】小程序云开发数据库查询可以先where再group吗

小程序云开发数据库查询可以先where再group吗

一如既往开发小程序,

场景

云开发数据库,在聚合的时候,先where,再group

问题:

那么云开放官方文档支持这种情况吗?

官方文档链接:

https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/database/aggregate/Aggregate.match.html

官方示例代码

const _ = db.command
const $ = _.aggregate
db.collection('articles')
  .aggregate()
  .match({
    score: _.gt(80)
  })
  .group({
      _id: null,
      count: $.sum(1)
  })
  .end()


本文场景,统计historys集合里面,在保证status=1下,根据subjectid来统计记录条数

具体代码

getGroupData: function(openid){
    let that = this;
    const db = wx.cloud.database();
    const $ = db.command.aggregate;
    // 使用操作符
    const _ = db.command;
    db.collection('historys').aggregate()
      .match({
        _openid: openid,
        status: _.eq(1)
      })
      .group({
        _id: {
          subjectid: '$subjectid'
        },
        nums: $.sum(1)
      })
      .end()
      .then((res)=>{
        console.log('20200223');
        console.log(res);
        let groupDatas = res.list;
        
        

      })
  }


输出结果

注意事项:

注意这个api是小程序基础库2.8.3,而云开发默认的基础库是2.8.1,当然随着时间的推移这些都是变化的,只是开发的时候如果代码不work,核对下基础库版本是否匹配得上。

最后一次编辑于  02-24  
点赞 1
收藏
评论

1 个评论

  • Admin²⁰²⁰
    Admin²⁰²⁰
    02-24

    这个跟mysql一样的用法么?

    02-24
    赞同
    回复 3
    • 何仙姑
      何仙姑
      02-24
      有差异,mysql是where,这里是match,结果里面mysql是直接group的key,云开发这里key是一个对象
      02-24
      回复
    • Admin²⁰²⁰
      Admin²⁰²⁰
      02-24回复何仙姑
      哦,这个性能如何,比mysql快吗?10万条数据查压测试试看
      02-24
      回复
    • 何仙姑
      何仙姑
      02-24回复Admin²⁰²⁰
      我了解下有没有这种压测的数据,感觉不是很好
      02-24
      回复
登录 后发表内容