$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": [] }}},
])