我必须获取一条记录,该记录具有我提供的名称字段和另一个我拥有subjectId
的集合的subjectname
字段-例如,我想获取一个具有name
萝拉和subjectname
作为物理学的学生记录(但是问题是我和subjectname
在一起,但是收集的学生具有该主题的字段ID,该字段ID已保存到某些其他集合中的主题为--with _id --- subject _id作为学生记录中的外地字段,我有学生姓名和科目名称,如何访问具有相应字段的学生?
答案 0 :(得分:0)
关于如何在Mongo中执行此操作,您有两种选择,我个人建议选择1号,因为这样会更加高效。
let subject = await subjectCollection.findOne({name: subjectname});
// add validation that subject exists in case needed.
let doc = await firstCollection.findOne({name: name, subjectId: subject._id})
// you can use `find` instead if multiple documents can be matched.
firstCollection.aggregate([
{
$match: {
name: name
}
},
{
$lookup: {
from: "subject_collection",
let: {subjectName: subjectName},
pipeline: [
{
$match: {
$expr: {
$eq: ["$$subjectName", "$name"]
}
}
}
],
as: "subjects"
}
},
{
$match: {
"subjects.0": {$exists: true}
}
}
])