收藏
回答

云函数中聚合数组字段,结果的顺序变了?

微信小程序云开发中,在云函数里需要取关联表的内容,使用了聚合技术,云函数中代码如下:

  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聚合后得到对象数组,但是有个大问题,就是顺序居然发生了变化。

怎么破?

最后一次编辑于  2021-05-09
回答关注问题邀请回答
收藏

2 个回答

  • 赵正
    赵正
    2021-10-04

    我也遇到同样的问题,聚合出来的数组顺序和原顺序不一致。查出来的顺序应该是按着存储顺序来的。但这样,不符合我的需求,我到求和原顺序一致,也不能用sort简单的排序来解决。最后,不得以,将获取到的数据,用js重新操作了一遍!真是无语!也许,有更好的方法,可惜,我没有找到。

    2021-10-04
    有用
    回复
  • 铅笔画不出蜡笔的味道
    铅笔画不出蜡笔的味道
    2021-05-09

    https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/database/aggregate/Aggregate.sort.html

    2021-05-09
    有用
    回复 2
    • 熊二
      熊二
      2021-05-10
      问题是我需要的顺序就是原来的顺序,不能重新排序
      2021-05-10
      回复
    • 蘆林
      蘆林
      2021-06-05
      同样的情况,聚合查询的localField是一个数组,可以在本地对数据进行重新的匹配,请问有什么新的方法吗
      2021-06-05
      回复
登录 后发表内容