开发经常会有类似的需求:已知一组学生的_id,查找这组学生的name属性做一些操作,现有两种方法:方法一遍历_id数组,分别findOne查询数据库:conststudentIds=['111','222','333',...]studentIds.forEach(_id=>{constname=db.student.findOne({_id}).nameconsole.log(name)})方法二根据$in先查到所有学生信息,再遍历所有信息取到name属性:conststudentIds=['111','222','333',...]conststudentList=db.student.find({_id:{$in:studentIds}})studentList.forEach(student=>{console.log(student.name)})两种方法哪种查询效率比较高?是否和数据量有关?或者有更有效的方法?求指点
2 回答
繁华开满天机
TA贡献1816条经验 获得超4个赞
第一种方法就很明显是N+1即使使用了索引,效率也不会很高,第二种虽然说in的效率也不是很高,但是如果你要取出的数据量大的话,很明显in就很占优势,如果你只是取1条,那就第一种更快。
添加回答
举报
0/150
提交
取消