2016-10-03 4 views
1

最初のコレクションに格納されているIDの2番目のコレクションからデータをフェッチしたいとします。 たとえば、2つのコレクションcollectionAとcollectionBがあります。私はこのデータを持っているcollectionAで2番目のコレクションからデータをフェッチする集約

:収集Bで

{ 
    "aid" : "afa6ad98adf5adf", 
    "cid" : "collectionBid132" 
}, 
{ 
    "aid" : "9sd5ds9ds5sd98", 
    "cid" : "collectionBid895" 
}, 
{ 
    "aid" : "a98asd4f6a7afd", 
    "cid" : "collectionBid654" 
} 

を私はこのデータを持っている:

{ 
    "cid" : "collectionBid132", 
    "cData" : "cDataBid132" 
}, 
{ 
    "cid" : "collectionBid895", 
    "cData" : "cDataBid895" 
}, 
{ 
    "cid" : "collectionBid654", 
    "cData" : "cDataBid654" 
} 

は、今私は"cData" from collectionB where cid = "collectionBid895" in collectionAの値を取得したいです。

どのように集約を使用できますか?

答えて

0

これには$lookupを使用できます。以下のクエリが機能するはずです。

db.collectionA.aggregate([ 
    { 
     $lookup: 
     { 
      from: "collectionB", 
      localField: "cid", 
      foreignField: "cid", 
      as: "collection_docs" 
     } 
    } 
]) 

出力: -

クエリ出力が

{ 
    "_id" : ObjectId("57f25931dd4752c20947fcfc"), 
    "aid" : "afa6ad98adf5adf", 
    "cid" : "collectionBid132", 
    "collection_docs" : [ 
     { 
      "_id" : ObjectId("57f2593bdd4752c20947fcff"), 
      "cid" : "collectionBid132", 
      "cData" : "cDataBid132" 
     } 
    ] 
} 
ようなものになるだろう
関連する問題