问题描述
想要得到course字段中复合要求的一条数据,使用find
后返回的数据包含多余数据,结果不理想。想要达到目的应该如何编写代码,初学moongse,似乎需要用到populate
或者aggregate
,这应该怎么写合适呢?谢谢!
相关代码
schema
const courseInf = new Schema({
teacher:String,
courseName:String,
});
const student = new Schema({
name:String, //姓名
classname:String, //班级
stunum:String, //学号
oldpassword:String, //旧密码
newpassword:String, //新密码
phonenum:String, //手机号
course:[courseInf] //课程
});
数据
{ _id: 5b7a97508e00501ceaf66030,
name: '张三',
class: '1',
stunum: '111',
oldpassword: '111',
course:
[ { _id: 5b7a97508e00501ceaf66032,
teacher: '李四',
courseName: '高等数学'
},
{ _id: 5b7a97508e00501ceaf66031,
teacher: '赵六',
courseName: '线性代数'
} ],
__v: 0 }
你期待的结果是什么?实际看到的错误信息又是什么?
想要只返回这一条数据
course:
[ { _id: 5b7a97508e00501ceaf66032,
teacher: '李四',
courseName: '高等数学'
}]
原来我的写法是 student.find({stunum:'1',courseName:'高等数学',teacher:'李四'});
但是返回的结果是
course:
[ { _id: 5b7a97508e00501ceaf66032,
teacher: '李四',
courseName: '高等数学'
},
{ _id: 5b7a97508e00501ceaf66031,
teacher: '赵六',
courseName: '线性代数'
} ]}
怎么才能得到想要的结果啊,请各位指点指点,谢谢!
这样应该会得到
如果只是想修改值,那就不需要取出来,直接修改就可以了