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

MongoDB嵌套数组查询:忽略空格匹配SKU并返回完整文档

解决方案:忽略SKU空格匹配并返回完整文档

针对你遇到的问题,推荐使用MongoDB聚合管道实现需求,既可以忽略SKU中的空格,又能避免正则过长限制,同时完整保留原始文档结构:

聚合管道代码

db.collection.aggregate([
  // 临时生成去除空格后的SKU数组
  {
    $addFields: {
      cleanedSkus: {
        $map: {
          input: "$item.skus",
          as: "sku",
          in: { $replaceAll: { input: "$$sku", find: " ", replacement: "" } }
        }
      }
    }
  },
  // 匹配与目标SKU数组有交集的文档
  {
    $match: {
      $expr: {
        $gt: [
          { $size: { $setIntersection: ["$cleanedSkus", ["c1", "d3"]] } },
          0
        ]
      }
    }
  },
  // 移除临时字段,恢复原始文档结构
  {
    $project: { cleanedSkus: 0 }
  }
])

方案说明

  1. $addFields阶段:对每个文档的item.skus数组逐个元素去除空格,生成临时字段cleanedSkus,不修改原始数据
  2. $match阶段:通过$setIntersection计算清理后的SKU数组与输入目标数组的交集,用$size判断交集长度是否大于0,筛选出符合条件的文档
  3. $project阶段:移除临时生成的cleanedSkus字段,返回和原始结构完全一致的文档

优势

  • 避免正则表达式长度限制:即使输入SKU数组包含5000+元素,也能正常处理
  • 完全保留原始文档:无需通过$unwind+$group重新组装文档,不会丢失任何原始数据
  • 动态适配输入数组:只需将代码中的["c1", "d3"]替换为动态传入的目标SKU数组即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 12:23:11