首页 > 解决方案 > 如何在 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",
    });
  }
};

标签: node.jsmongodb

解决方案


要获取特定学生的“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检查这个例子


推荐阅读