2016-11-24 4 views
0

mongochef를 사용하여 MongoDB에서 3 개의 컬렉션에 "가입"하고 싶습니다. 컬렉션은 "Order", "Employee"및 "City"입니다. 임시 콜렉션을 사용하려고했지만 효과적이지 않습니다. 이제 첫 번째 "join"에 var = a를 사용합니다.mongodb 여러 컬렉션에 가입

"a"를 표시하고 싶다면 20 개의 결과 만 표시됩니다. 아이디어 나 다른 해결책이 있습니까?

 var a = db.Order.aggregate([ 
    { 


     $lookup: 
     { 
     from: "City", 
     localField: "City Key", 
     foreignField: "City Key", 
     as: "lsg" 
     } 
    }, 
    { 
     $unwind: "$lsg" 
    }, 
    { 
     $project: 
     { 
      "_id":1, 
      "Salesperson Key":1, 
      "City": "$lsg.City" 
     } 
    } 

    ]) 

    a; 

var b = db.Employee.aggregate([ 
{ 


    $lookup: 
    { 
    from: "a", 
    localField: "Employee Key", 
    foreignField: "Salesperson Key", 
    as: "lsg2" 
    } 
}, 
{ 
    $unwind: "$lsg2" 
}, 
{ 
    $project: 
    { 
     "_id":1, 
     "Employee":1 
    } 
} 

]) 

미리 답변 해 주셔서 감사합니다.

답변

1

여러 $ 조회 단계를 넣을 수 있습니다, 그래서 당신은 (could't 테스트 만 작동합니다)이 같은 쿼리를 사용 그러나 여러 조인 피해야한다, MongoDB를가 하지 관계형 데이터베이스입니다 명심 수 ...

db.Order.aggregate([ 
    { 
     $lookup:{ 
     from:"City", 
     localField:"City Key", 
     foreignField:"City Key", 
     as:"lsg" 
     } 
    }, 
    { 
     $unwind:"$lsg" 
    }, 
    { 
     $lookup:{ 
     from:"Employee", 
     localField:"Salesperson Key", 
     foreignField:"Employee Key", 
     as:"lsg2" 
     } 
    }, 
    { 
     $unwind:"$lsg2" 
    }, 
    { 
     $project:{ 
     "_id":1, 
     "Employee":1, 
     "Salesperson Key":1, 
     "City":"$lsg.City" 
     } 
    } 
]);