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

MongoDB Aggregation lookup关联后筛选嵌套数组内匹配_id的子项

你可以在$project阶段使用$filter操作符过滤subKategori数组,只保留_id与idSubKategori匹配的子项,修改后的完整聚合查询如下:

Produk.aggregate([
    {
      $lookup: {
        from: "kis_m_kategoriproduks",
        localField: "idSubKategori",
        foreignField: "subKategori._id",
        as: "kategori",
      },
    },
    { $unwind: "$kategori" },
    { $sort: { produk: 1 } },
    {
      $project: {
        _id: 0,
        id: "$id",
        dataKategori: {
          idKategori: "$kategori._id",
          kategori: "$kategori.kategori",
          idSubKategori: "$idSubKategori",
          subKategori: {
            $filter: {
              input: "$kategori.subKategori",
              cond: { $eq: ["$$this._id", "$idSubKategori"] }
            }
          },
        },
      },
    },
  ])

如果执行后发现过滤不生效,大概率是idSubKategori为字符串类型、subKategori下的_id为ObjectId类型导致的类型不匹配,把$filter的cond修改为以下内容即可:

cond: { $eq: [{ $toString: "$$this._id" }, "$idSubKategori"] }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 16:45:08