必须列出如下所示的类别和产品,必须从 mongodb 检索数据。
A类
产品1
产品2
产品3
B类
产品4
产品5
产品6
数据库中的类别:
{
"_id": {
"$oid": "62c827b5a427b63741da9175"
},
"name": {
"en": "Home"
}
}
数据库中的产品:
{
"_id": {
"$oid": "648714ca2c67a70008c616db"
},
"categories": [
{
"$oid": "649911fc0e298800088d0214"
},
],
"image": [1000047887.png",1000047889.jpg"
],
"tag": [
"[]"
],
"category": {
"$oid": "648702f958cc2d0008cda715"
},
"name": "Product A"
}
需要获取数据为:
[
{
"category_name": "Abc",
"products": [{
"product_name": "cvb",
....
},
{
"product_name": "cvb",
....
}
]
},
{
"category_name": "Abc",
"products": [{
"product_name": "cvb",
....
},
{
"product_name": "cvb",
....
}
]
}
]
在这种情况下,您所需要做的就是使用
aggregation
和 $lookup
,通过类别 ID 连接 2 个集合。
{
"$lookup": {
"from": "product",
"localField": "_id",
"foreignField": "category",
"as": "products"
}
}
然后,您可以在聚合中添加
$project
步骤来格式化输出。
{
"$project": {
"category_name": "$name.en",
"products": {
"$map": {
"input": "$products",
"as": "temp",
"in": {
"product_name": "$$temp.name"
}
}
}
}
}