采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师,mongo能不能实现用关联出来子表的数据过滤父表的数据
在MongoDB中,可以使用聚合管道(Aggregation Pipeline)和$lookup操作符来实现关联查询,并通过$filter操作符对关联后的结果进行过滤。例如,您可以使用$lookup操作符在多个集合之间进行连接操作,以获取关联数据,然后通过$filter对关联的结果集进行过滤,以获得满足特定条件的结果集。
$lookup
$filter
具体来说,您可以在$lookup操作之后使用$project阶段,并在其中使用$filter来筛选符合要求的子文档。以下是一个示例代码,展示了如何根据子文档的状态过滤父文档中的子文档数组:
$project
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"的子文档。
product
inventory
inventory_docs
state
"OK"
登录后可查看更多问答,登录/注册
30%理论+70%实战,用实操检验真理,一门让你事半功倍的入门进阶课
1.9k 9
3.3k 4
1.6k 6
1.3k 9
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号