$match
अंदर $lookup
पाइपलाइन का jobCollection
. से कोई संबंध नहीं है दस्तावेज। यह केवल tasks
. के लिए दस्तावेज़ों को फ़िल्टर करता है संग्रह। तो, आपको एक और $match
का उपयोग करना होगा $lookup
. के बाद का चरण ROOT को फ़िल्टर करने के लिए (jobCollection
) दस्तावेज़।
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": [] }}},
])