2016-11-24 7 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" 
     } 
    } 
]); 
関連する問題