首页 > 解决方案 > Mongoose 从三层嵌套数组中查找文档

问题描述

我收集了主题、课程、级别、命令和课程。在下面提供每个架构。

"Topics":{
  course: {type: mongoose.Schema.ObjectId, ref: 'Courses'},
  "topicsName": String,
  "topicsURL": String
} // Note here  Course is just an object not an Object Array.

"Courses":{
  levels: [{
        type: mongoose.Schema.ObjectId, ref: 'Levels'
    }]
}

"Levels":{
    orders: [{
        type: mongoose.Schema.ObjectId, ref: 'Orders'
    }]
}

"Orders":{
  lessions: [{
        type: mongoose.Schema.ObjectId, ref: 'Lessions'
    }]
}
"Lessions":{
    _id: mongoose.Schema.ObjectId, // Auto generated Field by Mongoose
   "name": String,
   "description": String
}

现在我有一个课程 ID。使用课程 ID,我需要检索主题名称和主题 URL。

下面的 Mongoose 代码,我用来获取给定课程 ID 的主题详细信息。

let topic = {};
const order = await Orders.find({ 'lessions': req.params.id});
if (order.length) {
    const level = await Levels.find({ 'orders': order[0]._id });
    if(level.length) {
        const courses = await Courses.find({ 'levels': level[0]._id });
        if(courses.length) {
            const topics = await Topics.find({ 'course': courses[0]._id });
            if(topics.length) {
                topic._id = topics[0]._id;
                topic.name = topics[0].name;
            }
        }
    }
}

在 Mongo/Mongoose 中,如何通过运行单个查询来获取主题模式?

标签: mongodbmongoosemongoose-schema

解决方案


推荐阅读