如何在MongoDB中提取coursesMarks子对象并组合为数组返回
问题解决:提取coursesMarks属性生成courses数组
给定一个包含多个对象的数组,每个对象均包含coursesMarks属性,需要将该属性内的子对象提取出来,组合为名为courses的数组并按指定格式返回。
输入示例
[ { "coursesMarks": { "_id": "634a9be567a1f07be02f71d8", "courseCode": "cse1201", "courseTitle": "SP" } }, { "coursesMarks": { "_id": "634a9be567a1f07be02f71db", "courseCode": "cse1203", "courseTitle": "DS" } } ]
预期输出
[ { "courses": [ { "_id": "634a9be567a1f07be02f71d8", "courseCode": "cse1201", "courseTitle": "SP" }, { "_id": "634a9be567a1f07be02f71db", "courseCode": "cse1203", "courseTitle": "DS" } ] } ]
实现方案(JavaScript)
通过数组的map方法提取每个对象的coursesMarks属性值,再将结果封装到指定结构中:
const input = [ { "coursesMarks": { "_id": "634a9be567a1f07be02f71d8", "courseCode": "cse1201", "courseTitle": "SP" } }, { "coursesMarks": { "_id": "634a9be567a1f07be02f71db", "courseCode": "cse1203", "courseTitle": "DS" } } ]; // 提取coursesMarks并组合成目标结构 const output = [{ courses: input.map(item => item.coursesMarks) }]; // 输出格式化后的结果 console.log(JSON.stringify(output, null, 2));
说明
input.map(item => item.coursesMarks)会遍历输入数组的每个元素,取出其中的coursesMarks子对象,形成一个新数组;- 将这个新数组赋值给
courses属性,再把包含该属性的对象放入数组,就得到了符合要求的输出格式。
内容的提问来源于stack exchange,提问作者Shakhawat Hossain SHIHAB
相关产品推荐
相关产品推荐

