how to find data from foreign field inside lookups in aggregaiton code example
Example 1: 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
}
}
]);
Example 2: lookup in mongodb array
{ "_id" : ObjectId("5e5e787817aa3ef9ab8ab209"), "details" : [ ObjectId("5e5e782317aa3ef9ab8ab207"), ObjectId("5e5e782317aa3ef9ab8ab208") ], "output" : [ { "_id" : ObjectId("5e5e782317aa3ef9ab8ab207"), "Name" : "Chris" }, { "_id" : ObjectId("5e5e782317aa3ef9ab8ab208"), "Name" : "David" } ] }