评论

【笔记】小程序云开发数据库查询可以先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,核对下基础库版本是否匹配得上。

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

3 个评论

  • Hanamaki''
    Hanamaki''
    2021-06-28

    match 可以 传入一个集合么。相当于Command.all 这个用法,


    2021-06-28
    赞同
    回复
  • 王政娇
    王政娇
    2020-05-11

    用match代替where


    2020-05-11
    赞同
    回复 1
    • 小肥羊🍊
      小肥羊🍊
      2020-05-11
      对的
      2020-05-11
      回复
  • Admin ²º²⁴
    Admin ²º²⁴
    2020-02-24

    这个跟mysql一样的用法么?

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