【问题标题】:Can I pipe one aggregate command into another in MongoDB?我可以在 MongoDB 中将一个聚合命令传递到另一个聚合命令吗?
【发布时间】:2020-03-25 12:49:04
【问题描述】:
我有两个这样的查询:
db.employee.aggregate({$match: {lname:"Smith"}}, {$project: {"SSN": 1, "_id": 0}})
db.works_on.aggregate({$match: {essn: 123456789}}, {$project: {"pno": 1, "_id": 0}})
有没有一种方法可以将其转换为单个查询,其中 essn 编号由第一个聚合输出的 SSN 替换?
【问题讨论】:
标签:
database
mongodb
mongodb-query
aggregation-framework
【解决方案1】:
是的,您可以使用 $lookup 来完成。试试下面的查询。
db.employee.aggregate([
{
$lookup:{
from: "works_on",
localField: "SSN",
foreignField: "essn",
as: "employee_works"
}
},
{ $unwind:"$employee_works" },
{
$project:{
lname: 1,
SSN: 1,
pno : "$employee_works.pno",
}
}
]);