У меня есть две коллекции, к которым я хочу присоединиться как 2 условия. The examId и user Id. Я использую mongodb версии 4 и nodejs.tgongous в моем экзамене по приложениям нет:
{"_id" : ObjectId("5c4c21d8f45b3d53ff8c20a3"),
"title" : "first azmoon",
"time" : 600,
"preLesson" : {
"label" : "Lesson 13",
"value" : ObjectId("5c484e1852faa438c36c3da1")
},
}
result: {
"_id" : ObjectId("5c4993d5d0dc6f39c0f324bd"),
"usrId" : ObjectId("5c484e8852faa438c36c3da2"),
"lsnId" : ObjectId("5c484e1852faa438c36c3da1"),
"passedLesson" : false,
"timePassed" : "",
"quiz" : {
"time" : "5",
"questionTrue" : 0,
"getScore" : 0,
"permission" : true,
"quizScore" : 15,
"quizCount" : 3
},
"exam" : {
"examScore" : 0,
"examCount" : 0,
"getScore" : 0,
"time" : 600,
"questionTrue" : 0,
"permission" : false,
"exId" : ObjectId("5c4c21d8f45b3d53ff8c20a3")
}
}
Мне нужен результат, который выглядит как его SQL-код psodou:
select * from exams left join result on exam._id = result.exam.exaId
where result.usrId = ObjectId("5c484e8852faa438c36c3da2")
Я сделал следующее, но он только присоединяется к экзамену и результату без каких-либо условий
con.collection("exam").aggregate([
{
$lookup: {
from: "result",
let: {exaId: "$_id"},
pipeline: [
{
$match: {
$expr: {
$and: [
{$eq: ["exam.exId", "exaId"]},
{"usrId": new
ObjectID(`${usrId}`)}
]
}
}
},
],
as: "result"
}
},
{
$lookup: {
from: "lesson",
localField: "preLesson.value",
foreignField: "_id",
as: "lesson"
},
}
])
Я не знаю, в чем проблема, я буду признателен, если кто-нибудь может помочь мне, пожалуйста, с этим.