2016-11-24 145 views
0

我想通過使用mongochef「加入」MongoDB中的3個集合。收藏品是「訂單」,「員工」和「城市」。我試圖使用臨時集合,但它不是有效的。 現在我使用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

你可以把多個$查找階段,所以你可以使用這樣的查詢(頭被埋測試,但應該工作) 但是要避免多個連接,記住,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" 
     } 
    } 
]);