小程序
小游戏
企业微信
微信支付
扫描小程序码分享
需求是这样,我有一个订单表,里面有商品id和购买数量,先在希望通过lookup去扩展这个表,将商品名称、图片一起查出来。
如果单独试用lookup,查出来的结果和原有的goods是两个单独的字段,需要本地for循环2次重新组合,比较麻烦。
我猜测map和lookup是否有更好的组合试用方式,或者有其他的方法可以解决我刚才说的问题。谢谢!
1 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
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找到数组中匹配的下标,然后通过下标取到对应的数字。
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
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找到数组中匹配的下标,然后通过下标取到对应的数字。