आप $lookup लागू नहीं कर सकते सीधे सरणी में, लेकिन आप $unwind कर सकते हैं यह पहले।
उदाहरण दस्तावेजों के बिना, नीचे दिया गया कोड स्निपेट एक सामान्य दृष्टिकोण है:
pipeline := []bson.M{
bson.M{"$match": bson.M{"_id": userId }},
bson.M{"$unwind": "$otherUsersIdsArrayName"},
bson.M{
"$lookup": bson.M{
"from": userCollectionName,
"localField": otherUsersIdsArrayName,
"foreignField": "id",
"as": "friend"
}
},
bson.M{"$unwind": "$friend"},
bson.M{
"$group": bson.M{
"_id": "id",
"id": bson.M{"$first": "$id"},
"name": bson.M{"$first": "$name"},
"avatar": bson.M{"$first": "$avatar"},
otherUsersIdsArrayName: bson.M{ "$push": "$friend"}
}
}
}
pipe := collection.Pipe(pipeline)
resp := []bson.M{}
err = pipe.All(&resp)
मुझे यह उल्लेख करना चाहिए कि एकत्रीकरण/पाइप रिटर्न bson.M
, हाइड्रेटेड उपयोगकर्ता ऑब्जेक्ट नहीं। आखिर मोंगो एक रिलेशनल डेटाबेस नहीं है।