mongodb多表聚合lookup后,以关联表字段作为match条件 如何使用mongodb Aggregation实现 列举代码
时间: 2024-05-04 19:19:46 浏览: 145
MySQL多表之间字段的匹配实现代码
假设我们有两个集合:orders(订单)和 customers(客户),它们之间通过一个共同的字段 customerId(客户ID)进行关联。我们需要在 orders 集合中查询所有的订单,并将与之对应的客户信息也一并查询出来,最终的结果是将客户信息作为嵌套文档添加到订单文档中。
下面是使用 MongoDB 聚合框架进行多表聚合查询的代码:
```
db.orders.aggregate([
{
//使用lookup进行关联查询
$lookup: {
from: "customers",//关联的表名
localField: "customerId",//本地关联字段
foreignField: "_id",//外部关联字段
as: "customer"//查询结果别名
}
},
{
//使用unwind将customer数组展开
$unwind: "$customer"
},
{
//使用match进行过滤
$match: {
"customer.name": "张三"
}
},
{
//使用project进行字段投影
$project: {
_id: 1,
orderNo: 1,
customer: {
name: 1,
mobile: 1
}
}
}
])
```
在以上代码中,我们使用了 $lookup 操作符进行多表关联查询,并指定了 from、localField、foreignField 和 as 参数。接着使用 $unwind 操作符将查询结果中的 customer 数组展开成多个文档。然后使用 $match 操作符进行过滤,最后使用 $project 操作符进行字段投影,只保留需要的字段。
阅读全文