为了账号安全,请及时绑定邮箱和手机立即绑定

findOne还是$in?关于开发中的数据查询效率

findOne还是$in?关于开发中的数据查询效率

小怪兽爱吃肉 2019-04-27 17:17:04
开发经常会有类似的需求:已知一组学生的_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条,那就第一种更快。
                            
查看完整回答
反对 回复 2019-04-27
  • 2 回答
  • 0 关注
  • 297 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信