数据聚合中的Mongodb$查找-localField属性字符问题
我试图使用聚合$lookup在MongoDB中加入多个集合。我现在面临的问题是$lookup localField属性不接受$character 我有以下三个系列 学生数据聚合中的Mongodb$查找-localField属性字符问题,mongodb,Mongodb,我试图使用聚合$lookup在MongoDB中加入多个集合。我现在面临的问题是$lookup localField属性不接受$character 我有以下三个系列 学生 { "_id" : ObjectId("5db12e6dfc368dff1cfc30e5"), "studentId" : "S97YAREA51", "name" : "Has Maara duwa", "age" : 22 } 课程 { "_id" : ObjectId("5db12
{
"_id" : ObjectId("5db12e6dfc368dff1cfc30e5"),
"studentId" : "S97YAREA51",
"name" : "Has Maara duwa",
"age" : 22
}
课程
{
"_id" : ObjectId("5db12e6dfc368dff1cfc20e5"),
"courseId" : "C04865690",
"courseName" : "Love and Empathy"
}
学生课程
{
"_id" : ObjectId("5db12e6dfc368dff1cfc10e5"),
"student" : {
"$ref" : "student",
"$id" : ObjectId("5db12e6dfc368dff1cfc30e5")
},
"course" : {
"$ref" : "course",
"$id" : ObjectId("5db12e6dfc368dff1cfc20e5")
}
}
我需要更新studentCourse集合记录,如下所示
{
"_id" : ObjectId("5db12e6dfc368dff1cfc10e5"),
"student" : {
"$ref" : "student",
"$id" : ObjectId("5db12e6dfc368dff1cfc30e5")
},
"course" : {
"$ref" : "course",
"$id" : ObjectId("5db12e6dfc368dff1cfc20e5")
},
"studentId" : "S97YAREA51",
"courseId" : "C04865690"
}
我尝试创建以下聚合查询,但由于localField不接受$character,因此失败。如果有人能为我提供一个简单的解决方案,我将不胜感激
db.studentCourse.aggregate([
{
$lookup:{
from: "student",
localField: "student.$id",
foreignField: "_id",
as: "student"
}
},
{ $unwind:"$student" }, // $unwind used for getting data in object or for one record only
{
$lookup:{
from: "course",
localField: "course.$id",
foreignField: "_id",
as: "course"
}
},
{ $unwind:"$course" },
// define which fields are you want to fetch
{
$project:{
"_id" : 1,
"student" : 1,
"course" : 1,
"studentId" : "$student.studentId",
"courseId" : "$course.courseId",
}
}
]);
您好@SampathT-您正在使用DBRef和$lookup。MongoDB文档声明
,除非您有充分理由使用DBRefs,否则请使用手动引用。
()。这里有一个指向另一篇SO文章的链接,该文章描述了您面临的问题-。我的建议是重组您的文档。不要像RDBMS那样使用MongoDB,而是将其用作文档存储。有两个集合-“课程”和“学生”。在“学生收藏”中嵌入描述其课程的文档。