{
"_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
}
}
])
```