2016-10-03 90 views
1

我想從第二個集合中獲取數據,這個集合的id存儲在第一個集合中。例如我有兩個collection collectionA和collectionB。從第二個集合中獲取數據的聚合

在collectionA我有這樣的數據:

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

在collectionB我有這樣的數據:

{ 
    "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" 
     } 
    ] 
}