~可乐要加冰~ 2022-04-05 11:12 采纳率: 100%
浏览 34
已结题

小程序云开发,可以给一个表分组后再获取表内相关信息吗?lookup为什么值为0?

在dthistory集合中(第一张图),想要根据用户openid分组,算出每个用户score的最大值(也就是最高分),并输出用户相应的头像和昵称,请问要怎么写呢?? 1.开始想用group,后来发现只能输出分组的openid和最高分 2.后来又建了个集合放用户信息(User第二张图),想通过云函数(第三张图)用lookup来查询返回,但是调用云函数后输出值为0,(如第四张图) 请大家看看是什么原因呢?或者有没有什么好的解决办法,由于刚接触不是很懂,谢谢大家!

img

img

img

img

  • 写回答

2条回答 默认 最新

  • CSDN专家-showbo 2022-04-05 12:03
    关注

    多字段分组,排序字段应该是maxscore,已经不是socre了,返回的是聚合后的数据,效果如下

    img

    云函数getRank用下面的

    
    // 云函数入口文件
    const cloud = require('wx-server-sdk')
    
    cloud.init({
      env:'环境id'
    });
    const db=cloud.database();
    const _=db.command;
    const $=_.aggregate;
    
    // 云函数入口函数
    exports.main = async (event, context) => {
      return await db.collection('test').aggregate().group({
        _id:{
          openId:'$openId',
          nickName:'$nickName',
          avatarUrl:'$avatarUrl'
      },
        maxscore:$.max('$score')
      })
      .sort({maxscore:-1})
      .end()
    }
    

    demo.js

    wx.cloud.init({env: 'dbw3dev-5gf8fz972fd029e2'});
    const db = wx.cloud.database();
    Page({
        onLoad: function() {
          wx.cloud.callFunction({
            name:'getRank'
          })
          .then(res=>console.log('success',res))
          .catch(res=>console.log('error',res))
        }
    })
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 6月14日
  • 已采纳回答 6月6日
  • 创建了问题 4月5日

悬赏问题

  • ¥15 前端echarts坐标轴问题
  • ¥15 CMFCPropertyPage
  • ¥15 ad5933的I2C
  • ¥15 请问RTX4060的笔记本电脑可以训练yolov5模型吗?
  • ¥15 数学建模求思路及代码
  • ¥50 silvaco GaN HEMT有栅极场板的击穿电压仿真问题
  • ¥15 谁会P4语言啊,我想请教一下
  • ¥15 这个怎么改成直流激励源给加热电阻提供5a电流呀
  • ¥50 求解vmware的网络模式问题 别拿AI回答
  • ¥24 EFS加密后,在同一台电脑解密出错,证书界面找不到对应指纹的证书,未备份证书,求在原电脑解密的方法,可行即采纳