MongoDB Aggregation Lookup Match Array code example
Example 1: MongoDB Aggregation Lookup Match Array
db.users.aggregate([
{"$match":{"_id":ObjectId(..)}},
{"$lookup":{
"from":"groups",
"let":{"_id":"$_id"},
"pipeline":[
{"$match":{"$expr":{"$in":["$$_id","$members"]}}},
{"$unwind":"$members"},
{"$match":{"$expr":{"$eq":["$$_id","$members"]}}}
],
"as":"members"
}}
])
Example 2: mongodb aggregate lookup array of objects
db.getCollection('widgets').aggregate([
{ $unwind: '$info' },
{
$lookup: {
from: 'icons',
localField: 'info.iconId',
foreignField: '_id',
as: 'info.icon'
}
},
{ $unwind: '$info.icon' },
{
$group: {
_id: '$_id',
root: { $mergeObjects: '$$ROOT' },
info: { $push: '$info' }
}
},
{
$replaceRoot: {
newRoot: {
$mergeObjects: ['$root', '$$ROOT']
}
}
},
{
$project: {
root: 0
}
}
]);