Czy możesz spróbować tego :
db.collection_a.aggregate(
[{ $match: { _id: ObjectId(' ') } },
// other $lookups...
{
$lookup: {
as: 'collection_b',
from: 'collection_b',
let: { id: { $toString: '$_id' } },
pipeline: [
{
$addFields: {
"related": {
"$cond": {
"if": {
"$ne": [{ "$type": "$related" }, "array"]
},
"then": [],
"else": "$related"
}
}
}
},
{
$match: {
$expr: { $in: ['$$id', '$related'] }
}
}
// sorts, projections, etc...
]
}
}
// sorts, projections, etc...
]);
Jak mówi $in
przyjmuje tablicę jako drugi parametr, a wartość, której szukasz, jako pierwszy parametr.