mongodb 关联查询
时间: 2023-07-09 22:40:52 浏览: 47
在 MongoDB 中,关联查询可以通过使用 $lookup 操作符来实现。$lookup 操作符可以将一个集合中的数据与另一个集合中的数据进行关联查询。下面是一个简单的例子,假设我们有两个集合,一个是订单集合,一个是客户集合,它们的结构如下:
订单集合:
```
{
"_id": ObjectId("5f8d1c1e1c5a182d4c2a7014"),
"order_number": "123456",
"customer_id": ObjectId("5f8d1c1e1c5a182d4c2a7013"),
"total_price": 100.00
}
```
客户集合:
```
{
"_id": ObjectId("5f8d1c1e1c5a182d4c2a7013"),
"name": "John Doe",
"email": "john.doe@example.com"
}
```
我们可以使用 $lookup 操作符将订单集合中的 customer_id 字段与客户集合中的 _id 字段进行关联查询,查询出每个订单对应的客户信息,如下所示:
```
db.orders.aggregate([
{
$lookup: {
from: "customers",
localField: "customer_id",
foreignField: "_id",
as: "customer_info"
}
}
])
```
执行上述聚合查询后,我们会得到如下结果:
```
[
{
"_id": ObjectId("5f8d1c1e1c5a182d4c2a7014"),
"order_number": "123456",
"customer_id": ObjectId("5f8d1c1e1c5a182d4c2a7013"),
"total_price": 100.00,
"customer_info": [
{
"_id": ObjectId("5f8d1c1e1c5a182d4c2a7013"),
"name": "John Doe",
"email": "john.doe@example.com"
}
]
}
]
```
可以看到,每个订单的客户信息都被查询出来,并以数组的形式存储在 customer_info 字段中。需要注意的是,$lookup 操作符只能用于聚合查询中。