表关联问题
来源:3-3 【创建文档】动手实战 - 创建新文档的更多姿势

慕圣6101434
2022-11-24
老师,mongo能不能实现用关联出来子表的数据过滤父表的数据
写回答
1回答
-
好帮手慕小李
2025-02-13
在MongoDB中,可以使用聚合管道(Aggregation Pipeline)和
$lookup
操作符来实现关联查询,并通过$filter
操作符对关联后的结果进行过滤。例如,您可以使用$lookup
操作符在多个集合之间进行连接操作,以获取关联数据,然后通过$filter
对关联的结果集进行过滤,以获得满足特定条件的结果集。具体来说,您可以在
$lookup
操作之后使用$project
阶段,并在其中使用$filter
来筛选符合要求的子文档。以下是一个示例代码,展示了如何根据子文档的状态过滤父文档中的子文档数组:JavaScript复制
db.product.aggregate([ { $lookup: { from: "inventory", localField: "product", foreignField: "product", as: "inventory_docs" } }, { $project: { inventory_docs: { $filter: { input: "$inventory_docs", as: "item", cond: { $eq: [ "$$item.state", "OK" ] } } } } }])
在这个示例中,
$lookup
阶段用于连接product
和inventory
集合,并将匹配的结果赋值给inventory_docs
字段。然后,$project
阶段中的$filter
操作符用于筛选出state
字段为"OK"
的子文档。00
相似问题