MongoDb联表查询
时间: 2023-05-29 09:03:29 浏览: 94
MongoDB多表关联查询操作实例详解
5星 · 资源好评率100%
MongoDB使用聚合管道实现联表查询。
假设我们有两个集合:students和scores。students集合包含每个学生的基本信息,而scores集合包含每个学生的分数记录。
首先,我们需要使用$lookup操作符将两个集合联接起来。$lookup操作符将从另一个集合中查找匹配条件的文档,并将它们添加到当前文档中。
例如,以下聚合管道将联接students集合和scores集合:
```
db.students.aggregate([
{
$lookup:
{
from: "scores",
localField: "_id",
foreignField: "student_id",
as: "scores"
}
}
])
```
此聚合管道将查找每个学生的分数记录,并将它们添加到每个学生文档的"scores"字段中。
localField指定当前集合中用于匹配的字段,而foreignField指定目标集合中用于匹配的字段。在这种情况下,我们使用了students集合中的"_id"字段和scores集合中的"student_id"字段进行匹配。
如果我们只想返回特定字段的结果,可以使用$project操作符进行投影:
```
db.students.aggregate([
{
$lookup:
{
from: "scores",
localField: "_id",
foreignField: "student_id",
as: "scores"
}
},
{
$project:
{
_id: 1,
name: 1,
scores: "$scores.score"
}
}
])
```
在这个例子中,我们只返回学生的"_id","name"和"scores.score"字段。我们还使用"$scores.score"指定了我们只想返回分数记录中的"score"字段。
阅读全文