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

MongoDB Lookup管道匹配字段与数组问题求助

解决MongoDB $lookup中$in表达式不生效的问题

问题场景

已从customers集合筛选出id为100的客户,需通过带let和pipeline的$lookup关联sales集合,匹配客户id出现在sales.persons_related.id中的销售记录,但当前$in表达式未生效,无法得到预期结果。

解决方案

调整$lookup子管道中$in表达式的参数顺序,确保匹配逻辑正确。完整聚合管道代码如下:

db.customers.aggregate([
  { $match: { id: 100 } },
  {
    $lookup: {
      from: "sales",
      let: { customerId: "$id" },
      pipeline: [
        {
          $match: {
            $expr: {
              // 调整$in的参数顺序:待匹配值在前,目标数组在后
              $in: ["$$customerId", "$persons_related.id"]
            }
          }
        }
      ],
      as: "related_sales"
    }
  }
])

问题原因

$in的语法规则为$in: [ <待匹配值>, <目标数组> ],原代码中错误地将目标数组放在了第一个参数位置,导致匹配逻辑完全反转,无法找到符合条件的销售记录。调整参数顺序后,即可正确判断客户ID是否存在于sales.persons_related.id数组中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 00:06:23