2016-10-03 3 views
1

Ich möchte Daten aus der zweiten Sammlung abrufen, deren ID in der ersten Sammlung gespeichert ist. Zum Beispiel habe ich zwei Sammlungen collectionA und collectionB.Aggregation zum Abrufen von Daten aus der zweiten Sammlung

In collectionA ich habe diese Daten:

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

In collectionB ich diese Daten haben:

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

Jetzt möchte ich Wert von "cData" from collectionB where cid = "collectionBid895" in collectionA zu bekommen.

Wie ist es möglich, Aggregation zu verwenden?

Antwort

0

Sie können dazu $lookup verwenden. Die folgende Abfrage sollte funktionieren.

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

Ausgang: -

Die Abfrage Ausgang wäre so etwas wie

{ 
    "_id" : ObjectId("57f25931dd4752c20947fcfc"), 
    "aid" : "afa6ad98adf5adf", 
    "cid" : "collectionBid132", 
    "collection_docs" : [ 
     { 
      "_id" : ObjectId("57f2593bdd4752c20947fcff"), 
      "cid" : "collectionBid132", 
      "cData" : "cDataBid132" 
     } 
    ] 
} 
Verwandte Themen