Bạn có thể vui lòng thử cái này không:
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...
]);
Như nó nói $in
nhận một mảng làm tham số thứ hai và một giá trị bạn đang tìm kiếm làm tham số đầu tiên.