我尝试将两个集合输出和一个集合连接在一起,但是如何使用mongodb将两个集合结果连接到一个集合中却不起作用
促销收藏
[{
"id":1,
"name":"latest",
"product":[{
"id":3,
}]
}]
产品系列
[{
"id":3,
"product_name":"bourbon",
"category_id": 18
}]
类别集合
[{
"id":10,
"name":"laptop"
}]
映射代码
db.promotion.aggregate([{$lookup:{
from:'product',
localField:'products',
foreignField:'id',
as:'products'
}}]).toArray()
我得到了输出
[{
"id":1,
"name":"latest",
"product":[{
"id":3,
"product_name":"bourbon",
"category_id": 18
}]
}]
例外的输出
[{
"id":1,
"name":"latest",
"product":[{
"id":3,
"product_name":"bourbon",
"name":"laptop"
}]
}]
如何实现它。这种情况
答案 0 :(得分:1)
您可以使用以下汇总
db.promotion.aggregate([
{ "$lookup": {
"from": "product",
"let": { "products": "$products" },
"pipeline": [
{ "$match": { "$expr": { "$eq": ["$id", "$$products"] } } },
{ "$lookup": {
"from": "category",
"let": { "category_id": "$category_id" },
"pipeline": [
{ "$match": { "$expr": { "$eq": ["$id", "$$category_id"] } } }
],
"as": "category"
}},
{ "$project": {
"id": 1,
"product_name": "bourbon",
"name": { "$arrayElemAt": ["$category.name", 0] }
}}
],
"as": "product"
}}
])