聚合以从第二个集合中获取数据

时间:2016-10-03 13:09:16

标签: mongodb mongodb-query aggregation-framework

我想从第二个集合中获取数据,其id存储在第一个集合中。 例如,我有两个集合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的价值。

如何使用聚合?

1 个答案:

答案 0 :(得分: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"
        }
    ]
}