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
相关产品推荐
相关产品推荐

