数据聚合中的Mongodb$查找-localField属性字符问题

数据聚合中的Mongodb$查找-localField属性字符问题,mongodb,Mongodb,我试图使用聚合$lookup在MongoDB中加入多个集合。我现在面临的问题是$lookup localField属性不接受$character 我有以下三个系列 学生 { "_id" : ObjectId("5db12e6dfc368dff1cfc30e5"), "studentId" : "S97YAREA51", "name" : "Has Maara duwa", "age" : 22 } 课程 { "_id" : ObjectId("5db12

我试图使用聚合$lookup在MongoDB中加入多个集合。我现在面临的问题是$lookup localField属性不接受$character

我有以下三个系列

学生

{
    "_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,而是将其用作文档存储。有两个集合-“课程”和“学生”。在“学生收藏”中嵌入描述其课程的文档。