You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MongoDB lookup聚合使用pipeline返回空数组如何解决

问题原因

cart是数组类型字段,通过$cart.product_id取到的$$pid是所有商品ID组成的数组,你使用$eq匹配单值_id和数组自然无法得到匹配结果。原生带localField/foreignField的$lookup会自动处理数组的包含匹配逻辑,但带pipeline的版本需要手动实现该逻辑。

修正方案

把$eq替换为$in运算符即可,修改后的查询语句如下:

{
  from: 'collectionB',
  let: {pid: '$cart.product_id'},
  pipeline: [
    {
      $match: {
        $expr: {
          $in: ['$_id', '$$pid']
        }
      }
    }
    // 此处可继续添加其他聚合阶段,实现更复杂的关联过滤逻辑
  ],
  as: 'product_detail'
}

内容的提问来源于stack exchange,提问作者Minh Hoang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 08:57:02