【发布时间】:2022-10-12 22:16:59
【问题描述】:
假设我有两个集合:
培训班:
[
{
_id: 1,
name: "Geometry",
teacher_id: 1
},
{
_id: 2,
name: "English",
teacher_id: 2
}
]
教师:
[
{
_id: 1,
firstName: "John",
lastName: "Adams"
},
{
_id: 2,
firstName: "Mary",
lastName: "Jane"
}
]
现在我对两个集合执行聚合以创建类似于 SQL 中的连接的内容:
db.collection("courses").aggregate([
{
$lookup:{
from: "teachers",
localField: "teacher_id",
foreignField: "_id",
as: "teacher_info"
}
},
{
$match:{
//I want to perform a match or filter here on the teacher_info
}
}
]);
$lookup 和聚合将返回具有新的teacher_info 数组字段的文档列表。
[
{
_id: 1,
name: "Geometry",
teacher_id: 1,
teacher_info: [
{
_id: 1,
firstName: "John",
lastName: "Adams"
},
]
},
{
_id: 2,
name: "English",
teacher_id: 1,
teacher_info: [
{
_id: 2,
firstName: "Mary",
lastName: "Jane"
},
]
}
]
我需要在新创建的teacher_info 数组字段中执行匹配操作。例如,只保留名字为“John”的老师。我该怎么做?那可能吗?
【问题讨论】:
标签: mongodb mongodb-query aggregation-framework