我可以在MongoDB中将一个聚合命令管道传输到另一个吗



我有两个这样的查询:

db.employee.aggregate({$match: {lname:"Smith"}}, {$project: {"SSN": 1, "_id": 0}})
db.works_on.aggregate({$match: {essn: 123456789}}, {$project: {"pno": 1, "_id": 0}})

有没有办法把它变成一个单一的查询,用第一个聚合输出的SSN替换essn编号?

是的,您可以使用$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",
} 
}
]);

最新更新