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

MongoDB聚合分组后$lookup操作失效问题求助

问题:筛选itemId不唯一的文档并通过$lookup恢复缺失属性失败

需求

筛选出itemId字段值不唯一的文档(仅做筛选操作,不删除集合中的文档)

可正常运行的聚合查询

以下聚合查询可正确完成上述筛选需求:

db.contents.aggregate([
{
    $match: {
        $or: [
            {
                $and: [
                    { widgetId: new ObjectId("648d461dae1b9fb2af57fbb2") },
                    { value: 'Yes' }
                ]
            },
            {
                $and: [
                    { widgetId: new ObjectId("648d4111ae1b9fb2af57f8f9") },
                    {
                        value: "40"
                    }
                ]
            }
        ]
    }
},
{
    $group: {
        _id: "$itemId",
        count: {
            $sum: 1
        },
        contents: {
            $push: {
                _id: "$_id",
                value: "$value",
                label: "$label",
                widgetId: "$widgetId",
                itemId: "$itemId"
            }
        },
    }
},
{
    $match: {
        count: {
            $gte: 2
        }
    }
},
{ $unwind: "$contents" },
{
    $group: {
        _id: "$contents._id",
        label: { "$first": "$contents.label" },
        value: { "$first": "$contents.value" },
        widgetId: { "$first": "$contents.widgetId" },
        itemId: { "$first": "$contents.itemId" }
    }
}
])

查询返回结果

上述查询的返回结果如下:

[{
_id: ObjectId("648d5199221f77c425aac223"),
label: 'Featured Product',
value: 'Yes',
widgetId: ObjectId("648d461dae1b9fb2af57fbb2"),
itemId: ObjectId("648d5199221f77c425aac21a")
},
{
_id: ObjectId("648d5131221f77c425aac1b7"),
label: 'Discount',
value: '40',
widgetId: ObjectId("648d4111ae1b9fb2af57f8f9"),
itemId: ObjectId("648d5131221f77c425aac1b0")
},
{
_id: ObjectId("648d5131221f77c425aac1b9"),
label: 'Featured Product',
value: 'Yes',
widgetId: ObjectId("648d461dae1b9fb2af57fbb2"),
itemId: ObjectId("648d5131221f77c425aac1b0")
},
{
_id: ObjectId("648d50d3221f77c425aac160"),
label: 'Discount',
value: '40',
widgetId: ObjectId("648d4111ae1b9fb2af57f8f9"),
itemId: ObjectId("648d50d3221f77c425aac146")
},
{
_id: ObjectId("648d50d3221f77c425aac162"),
label: 'Featured Product',
value: 'Yes',
widgetId: ObjectId("648d461dae1b9fb2af57fbb2"),
itemId: ObjectId("648d50d3221f77c425aac146")
},
{
_id: ObjectId("648d5199221f77c425aac221"),
label: 'Discount',
value: '40',
widgetId: ObjectId("648d4111ae1b9fb2af57f8f9"),
itemId: ObjectId("648d5199221f77c425aac21a")
}]

问题:添加$lookup后查询无法正常工作

尝试在查询末尾添加$lookup操作,从同集合中恢复文档缺失的属性,但查询无法正常运行:

db.contents.aggregate([
// 上述原有聚合阶段
{
    $lookup: {
        from: "contents",
        localField: "itemId",
        foreignField: "itemId",
        as: "contents"
    }
}
])

补充:待关联的文档示例

以下是尝试通过$lookup关联的补充文档示例:

{
   "_id": {
     "$oid": "648d5199221f77c425aac21d"
   },
   "widgetType": "input",
   "label": "Name",
   "itemId": {
     "$oid": "648d5199221f77c425aac21a"
   },
   "formId": {
     "$oid": "648d4111ae1b9fb2af57f8f5"
   },
   "slug": "name",
   "value": "FITTED DRESS",
   "trashed": "false",
   "status": 1,
   "widgetId": {
     "$oid": "648d4111ae1b9fb2af57f8f7"
   },
   "createdAt": {
     "$date": "2023-06-17T06:24:25.417Z"
   },
   "updatedAt": {
     "$date": "2023-06-19T14:07:42.600Z"
   },
   "disabled": "false"
},
{
   "_id": {
     "$oid": "648d5199221f77c425aac21e"
   },
   "widgetType": "input",
   "label": "Slug",
   "itemId": {
     "$oid": "648d5199221f77c425aac21a"
   },
   "formId": {
     "$oid": "648d4111ae1b9fb2af57f8f5"
   },
   "slug": "slug",
   "value": "fitted-dress",
   "trashed": "false",
   "status": 1,
   "widgetId": {
     "$oid": "648d419bae1b9fb2af57f967"
   },
   "createdAt": {
     "$date": "2023-06-17T06:24:25.417Z"
   },
   "updatedAt": {
     "$date": "2023-06-19T14:07:42.600Z"
   },
   "disabled": "false"
},
{
   "_id": {
     "$oid": "648d5199221f77c425aac21f"
   },
   "widgetType": "input",
   "label": "Price",
   "itemId": {
     "$oid": "648d5199221f77c425aac21a"
   },
   "formId": {
     "$oid": "648d4111ae1b9fb2af57f8f5"
   },
   "slug": "price",
   "value": "174",
   "trashed": "false",
   "status": 1,
   "widgetId": {
     "$oid": "648d4111ae1b9fb2af57f8f8"
   },
   "createdAt": {
     "$date": "2023-06-17T06:24:25.417Z"
   },
   "updatedAt": {
     "$date": "2023-06-19T14:07:42.600Z"
   },
   "disabled": "false"
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 17:38:07