收藏
回答

【微信小程序】【数据库】【聚合】能否先输出统计数值count,再输出聚合结果?

const res = await db_contract.where({
    countrys:event.countrys
  }).count()//先获取符合结果的数量
  e.total = res.total
  if(e.total!=0){
  await db_contract.aggregate()
      .lookup({
        from:'MC_users',
        localField: 'no',
        foreignField: 'no',
        as'user',
      }).match({//匹配结果
        reach:false,
        countrys:event.countrys
      }).sort({
        _id:1
      }).//COUNT()这样不行
      .skip(event.start)
      .end()
      .then(r => {//返回匹配值,数据量大于20
        e.list = r.list
        console.log(r)
      })
      .catch(err =>{
        e.errCode = err.errCode
        console.error(err)
      })

这是我现在在用的代码,但是这样有点蠢,我只想要个计数和匹配数组,但是却做了两次查询,有没有什么办法能整合到一起吗?

回答关注问题邀请回答
收藏

3 个回答

  • o0o有脾气的酸奶
    o0o有脾气的酸奶
    2020-07-13

    两次查询问题不大

    const res = await db_contract.where({
        reach:false,
        countrys:event.countrys
      }).count()
    

    若认为该回答有用,给回答者点个[ 有用 ],让答案帮助更多的人

    2020-07-13
    有用 1
    回复 13
    • YYsj~
      YYsj~
      2020-07-13
      就是代码会很长,这个第一次计数的时候还不用聚合,要是用聚合那个长度很让人不舒适
      2020-07-13
      回复
    • o0o有脾气的酸奶
      o0o有脾气的酸奶
      2020-07-13回复YYsj~
      长也没事啊,写一个就可以了
      2020-07-13
      1
      回复
    • YYsj~
      YYsj~
      2020-07-13
      原来可以这样,那就好办了
      2020-07-13
      回复
    • YYsj~
      YYsj~
      2020-07-16回复o0o有脾气的酸奶
      大佬,这样写给我报错啊,let rows这里那个let显示错误
      2020-07-16
      回复
    • YYsj~
      YYsj~
      2020-07-16回复o0o有脾气的酸奶
      我搞错了,少打了个括号
      2020-07-16
      回复
    查看更多(8)
  • admin
    admin
    发表于小程序端
    2020-07-12
    我也想知道,能不能count和get同时进行
    2020-07-12
    有用
    回复 1
    • YYsj~
      YYsj~
      2020-07-12
      我之前自己试是不行,数据量大于20了就很难做
      2020-07-12
      回复
  • 白宦成 #Linux中国
    白宦成 #Linux中国
    2020-07-11
    const res = await db_contract.where({
        countrys:event.countrys
      }).count()//先获取符合结果的数量
      e.total = res.total
    


    这部分可以不写,直接聚合,最后根据聚合结果判断

    2020-07-11
    有用
    回复 2
    • YYsj~
      YYsj~
      2020-07-11
      但是聚合结果不是最多只能返回20个吗,还是说聚合结果里有字段会显示总数量?PS:数据总量大于20
      2020-07-11
      1
      回复
    • 任rrr
      任rrr
      2020-08-05
      小白刚入门,刚学的await不是应该被包装在async中么。在小程序端这样编译确实报错了。所以在小程序端我应该怎么获得count().total的值呢?
      2020-08-05
      回复
登录 后发表内容
问题标签