【问题标题】: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",
        } 
    }
]);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-17
    • 1970-01-01
    • 2012-02-24
    • 2020-08-07
    • 2022-06-13
    • 1970-01-01
    相关资源
    最近更新 更多