子文档是数组怎么做$lookup呢

{
    "_id": ObjectId("61ea7e9da9d1ce8814002d17"),
    "name": "雷",
    "age": 39,
    "products": [
        {
            "name": "测试产品1",
            "size": [
                ObjectId("622f0f71a9d1ce74b4001512"),
                ObjectId("622f0f8aa9d1ce74b4001513")
            ]
        },
        {
            "name": "测试产品2",
            "size": [
                ObjectId("622f0f71a9d1ce74b4001512")
            ]
        }
    ]
}

上面是student

 

 

product_size

 

{
    "_id": ObjectId("622f0f71a9d1ce74b4001512"),
    "name": "15寸"
}


{
    "_id": ObjectId("622f0f8aa9d1ce74b4001513"),
    "name": "17寸"
}

 



```javascript

db.student3.aggregate([
    {
        $lookup: 
        {
            from: 'products2', // 右集合
            let: {
                student_products: "$product_ids",
                
            },
            pipeline: [
                {
                    // 应该循环匹配
                    $match: {
                        $expr: 
                        {
                            $in: ["$_id", "$$student_products"]
                        }
                    }
                },
                {
                    // 子文档使用lookup
                    $lookup: {
                        "from": "test_size",
                        "localField": "size",
                        "foreignField": "_id",
                        "as": "size"
                    }
                },
                {
                    $project: {
                        _id: 0
                    }
                }
            ],
            as: 'order_products' // 新生成字段(类型array)
        },
        
    },
    {
        $project: {
            product_ids: 0
        }
    }
])




```