微信小程序云开发中,在云函数里需要取关联表的内容,使用了聚合技术,云函数中代码如下:
await db.collection('groupon').aggregate().match({
course: courseId
})
.lookup({
from: 'user',
localField: 'member',
foreignField: '_id',
as: 'memberList',
}).end()
.then(res => {
console.log(res);
cg.course = res.data;
})
.catch(err => console.error(err))
其中groupon表有个member字段是个数组,里面装了user表的主键。现在使用聚合技术得到结果如下:
可以看到效果基本出来了,member是原始数据是user表得主键构成得数组,然后memberList是根据member聚合后得到对象数组,但是有个大问题,就是顺序居然发生了变化。
怎么破?
我也遇到同样的问题,聚合出来的数组顺序和原顺序不一致。查出来的顺序应该是按着存储顺序来的。但这样,不符合我的需求,我到求和原顺序一致,也不能用sort简单的排序来解决。最后,不得以,将获取到的数据,用js重新操作了一遍!真是无语!也许,有更好的方法,可惜,我没有找到。
https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/database/aggregate/Aggregate.sort.html