Могу ли я передать одну агрегатную команду в другую в MongoDB? - PullRequest
0 голосов
/ 25 марта 2020

У меня есть два запроса как таковых:

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 первым агрегатом?

1 Ответ

1 голос
/ 25 марта 2020

Да, вы можете сделать это, используя $ 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",
        } 
    }
]);
...