Это запрос, который был написан для проекта examDetails, и условие заключается в том, что значения в userExamDetails не должны отображаться в examDetails. Условие $ eq здесь не работает.
db.getCollection('collectionOne').aggregate([
{'$match': { "user_id": ObjectId("5a1fb48c9815361dbe631974"), 'status': 1 }},
{ '$lookup': {
from: 'collectionTwo',
localField: 'package.ids',
foreignField:'_id',
as:'packageDetails'
}},
{ '$lookup': {
from: 'collectionThree',
localField: 'packageDetails.ids',
foreignField:'examId',
as:'userExamDetails'
}},
{ '$lookup': {
from: 'collectionFour',
localField: 'packageDetails.exams',
foreignField:'_id',
as:'examDetails'
}},
{ '$project': {
'packageDetails': '$packageDetails',
'userExamDetails': '$userExamDetails',
'examDetails': {
'$filter': {
input: "$examDetails",
as: "examDetails",
cond: {
'$eq': [ "$$examDetails._id",
"$userExamDetails.examId"]
}
}
}
}
}
])