node.js - 如何在 Mongo/ 中获取嵌套元素
问题描述
我正在尝试从 Mongo Collection 中获取嵌套元素。我需要 sem-1 的数据,但我正在获取特定学生 ID 下的所有内容。
参考:
Mongo DB 结构https://i.stack.imgur.com/PNGS8.png这是我的代码
exports.gtMarks = async (req, res) => {
const { student_id, semister } = req.body;
try {
const AllMarks = await MarksCardList.findOne({
student_id: student_id,
"marksCard_list.semister": semister,
});
res.status(200).json(AllMarks);
} catch (error) {
res.status(400).json({
message: "Cant fetch marks form db",
});
}
};
解决方案
要获取特定学生的“sem-1”数据,您首先必须找到该学生,然后必须找到“sem-1”的marksCard_list。为了仅获取“sem-1”的数据,您需要展开marksCard_list数组,然后应用匹配查询来查找所需的学期。以下是获取 student_id = "1" 和学期 = "sem-1" 所需输出的代码
db.collection.aggregate(
{
$match: {
"student_id": 1
}
},
{
$unwind: "$marksCard_list"
},
{
$match: {
"marksCard_list.semester": "sem-1"
},
},
{
"$project": {
"marksCard_list.marks": 1
}
}
)
从 mongoplayground检查这个例子
推荐阅读
- javascript - 从http post请求下载文件 - Angular 6
- java - 如何在 Spring Boot 中测试组件/bean
- redhat-datavirt - JDV中是否存在函数NTILE
- jquery - jquery使用parseFloat和toFixed
- javascript - lodash 链式方法中的当前链
- javascript - OnEdit() 谷歌脚本触发器在函数中的使用
- android - 你如何让 Android TextView 向右展开?
- python - 如何在 Python 的 yaml 文件中配置多个字典键?
- laravel - laravel vue 无法获取数据
- python - Flask/python 路由在本地运行,但在 GCP 上崩溃