收藏
回答

云开发 数组遍历与lookup如何结合?

需求是这样,我有一个订单表,里面有商品id和购买数量,先在希望通过lookup去扩展这个表,将商品名称、图片一起查出来。

如果单独试用lookup,查出来的结果和原有的goods是两个单独的字段,需要本地for循环2次重新组合,比较麻烦。

我猜测map和lookup是否有更好的组合试用方式,或者有其他的方法可以解决我刚才说的问题。谢谢!

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

1 个回答

  • 王政娇
    王政娇
    2020-06-08
    db.collection('order')
    .aggregate()
    .match({
    _id: '38d78ca75edb33de005****32c641cc'
    })
    .lookup({
    from: 'goods',
    let: {
    goods: '$goods'
    },
    pipeline: $.pipeline()
    .match(_.expr(
    $.in(['$_id', '$$goods._id'])
    ))
    .project({
    num: $.arrayElemAt(['$$goods.num', $.indexOfArray(['$$goods._id', '$_id'])]),
    gName: 1,
    photos: 1
    })
    .done(),
    as: 'goodsList',
    })
    .end()
    


    终于搞定了, 虽然不一定是最优雅的姿势。

    分享一下思路:先试用lookup的高级方式,然后通过通过id找到数组中匹配的下标,然后通过下标取到对应的数字。

    2020-06-08
    有用
    回复
登录 后发表内容
问题标签