在dthistory集合中(第一张图),想要根据用户openid分组,算出每个用户score的最大值(也就是最高分),并输出用户相应的头像和昵称,请问要怎么写呢?? 1.开始想用group,后来发现只能输出分组的openid和最高分 2.后来又建了个集合放用户信息(User第二张图),想通过云函数(第三张图)用lookup来查询返回,但是调用云函数后输出值为0,(如第四张图) 请大家看看是什么原因呢?或者有没有什么好的解决办法,由于刚接触不是很懂,谢谢大家!
多字段分组,排序字段应该是maxscore,已经不是socre了,返回的是聚合后的数据,效果如下
// 云函数入口文件
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()
}
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))
}
})