$match bên trong $lookup đường ống không liên quan đến jobCollection các tài liệu. Nó chỉ lọc các tài liệu cho các tác vụ tasks thu thập. Vì vậy, bạn phải sử dụng thêm một $match giai đoạn sau $lookup để lọc ra ROOT (jobCollection ) tài liệu.
jobCollection.aggregate([
{ "$match": { "$text": { "$search": "1234" }}},
{ "$lookup": {
"from": "task",
"let": { "job_id": "$_id" },
"pipeline": [
{ "$match": {
"$expr": {
"$and": [
{ "$eq": ["$job", "$$job_id"] },
{ "$eq": ["$status", "FAILED"] }
]
}
}}
],
"as": "tasks"
}},
{ "$match": { "tasks": { "$ne": [] }}},
])