【发布时间】:2021-09-16 15:13:19
【问题描述】:
这里有两个收藏
类别
[
{
id: 1,
name: "MEN",
status: true
},
{
id: 2,
name: "WOMEN",
staus: true
}
]
服务
[
{
name: "service a",
category_id: 1,
status: true
},
{
name: "service b",
category_id: 1,
status: true
},
{
name: "service c",
category_id: 1,
status: true
},
{
name: "service d",
category_id: 1,
status: false
}
]
我希望该类别中的所有服务都明智。为此,我使用了lookup 侵略。我又添加了一个攻击阶段来过滤状态为 true 的服务。
我尝试了以下方法。
db.category.aggregate([
{
"$lookup": {
"from": "services",
"localField": "id",
"foreignField": "category_id",
"as": "services"
}
},
{
"$match": {
"services.status": true
}
}
])
预期输出
[
{
"_id": ObjectId("5a934e000102030405000000"),
"id": 1,
"name": "MEN",
"services": [
{
"_id": ObjectId("5a934e000102030405000002"),
"category_id": 1,
"name": "service a",
"status": true
},
{
"_id": ObjectId("5a934e000102030405000003"),
"category_id": 1,
"name": "service b",
"status": true
},
{
"_id": ObjectId("5a934e000102030405000004"),
"category_id": 1,
"name": "service c",
"status": true
},
],
"status": true
}
]
【问题讨论】:
标签: mongodb mongoose mongodb-query