【问题标题】:How to retrieve subdocuments references in MongoDB如何在 MongoDB 中检索子文档引用
【发布时间】:2016-05-06 06:22:35
【问题描述】:

数据结构

"classrooms" : [
    {
        id : ObjectId("class1")
        "students" : [
            ObjectId("student1")
        ],
    },
    {
        id : ObjectId("class2")
        "students" : [
        ]
    }
],
"students" : [
    {
       "id" : ObjectId("student1"),
       "firstname" : "Ciljan",
       "age" : NumberInt(23)
    },
    {
       "id" : ObjectId("student2"),
       "firstname" : "John",
       "age" : NumberInt(19)
    }
]

需要

我必须提供有教室和学生的文件。 可以将学生分配到特定的教室,但并非总是如此,因此学生可以保持空闲。 使用前面的数据结构,我有一个子文档“students”,它提供了所有可用学生的列表,包括已分配和未分配的学生。我可以将一个学生分配到一个教室,该教室将学生 ID 存储在教室的学生数组中。

问题

我如何检索这些数据,以便为每个教室提供有关其分配学生的所有记录?

【问题讨论】:

    标签: javascript node.js mongodb mongodb-query


    【解决方案1】:

    你的意思是像Classroom.find({}).populate('students') 这样的东西吗?这将返回一个包含学生字段的教室数组。

    【讨论】:

    • 也许可以,但是 MongoDB Node.js 原生驱动程序不存在此“填充”功能。也许这是 Mongoose 的命令?
    • mongoose 模块已经内置了“填充”:mongoosejs.com/docs/api.html#document_Document-populate 在查看您的 sn-p 时,看起来教室和学生是更大模式的一部分,在这种情况下,深度填充插件就是您所需要的:npmjs.com/package/mongoose-deep-populate 将插件注册到架构后,调用为 LargerSchema.find({}).deepPopulate('classroomsclassrooms.students')
    • 非常感谢,虽然我只能使用 MongoDB Node.js Native Driver 而不是 Mongoose。您链接的模块始终与我的逻辑实现无法使用的 Mongoose Schema 相关。也许我必须自己做。
    • 啊,我明白了。在这种情况下,不,没有办法,但这里提供了一些解决方案:stackoverflow.com/questions/19678259/…
    猜你喜欢
    • 1970-01-01
    • 2016-12-29
    • 2015-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-15
    • 1970-01-01
    • 2018-10-27
    相关资源
    最近更新 更多