php mongodb lookup,mongodb-在$lookup管道中使用$match$进行聚合
时间: 2023-09-05 10:08:58 浏览: 136
spring data mongodb 聚合 管道
在 MongoDB 中使用 $lookup 管道与 $match 管道进行聚合操作,可以实现多个集合的数据关联和筛选。下面是一个使用 $lookup 和 $match 管道进行聚合的示例:
假设我们有两个集合:orders 和 customers,其中 orders 集合包含了订单的信息,customers 集合包含了顾客的信息。我们希望通过 $lookup 管道将这两个集合关联起来,并且只返回顾客名字为 Tom 的订单信息。
我们可以使用以下代码实现该聚合操作:
```
db.orders.aggregate([
{
$lookup:
{
from: "customers",
localField: "customer_id",
foreignField: "_id",
as: "customer"
}
},
{
$unwind: "$customer"
},
{
$match: { "customer.name": "Tom" }
}
])
```
上述代码中,第一个 $lookup 管道将 orders 集合中的 customer_id 字段和 customers 集合中的 _id 字段进行关联,将匹配的顾客信息存储到 customer 数组中。接着使用 $unwind 管道展开 customer 数组,并使用 $match 管道筛选出顾客名字为 Tom 的订单信息。
使用 $lookup 和 $match 管道进行聚合操作可以实现复杂的数据关联和筛选,非常适合需要对多个集合进行联合查询的场景。
阅读全文