mongodb - 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 中,如何通过运行单个查询来获取主题模式?
解决方案
推荐阅读
- vhdl - 使用全加器纹波的 N 位加法器/减法器 - 进位问题
- javascript - 在没有jquery的情况下将g标签添加到svg标签中
- javascript - 当数据多于 a4 大小时打印空白数据
- python - 将 dask 列转换为日期并应用 lambda 函数
- node.js - 如何在 .BOT 文件中更改聊天机器人的 LUIS 应用程序?
- server - VPS Server INSIDE China - 主机推荐?
- layout - 不要在 GOJS 中为 ForceDirectedLayout 重叠节点
- javascript - C# 如何将复杂 JSON 对象的子对象转换为模型
- vue.js - 迭代时没有得到不同的类名
- asp.net-mvc - 我想在 mvc 的服务器路径中下载我的 Pdf 文件,请任何人指导我...用代码