当前位置: 博客 /  Database  / 过滤MongoDB查找结果及findOne介绍

过滤MongoDB查找结果及findOne介绍

用法

在MongoDB查找数据的时候,有一些数据不想返回,比如查找用户,不想返回密码,应该怎么做呢? 我们在find或者findOne的第二个参数加上限制条件,比如如下第二个参数{‘pwd’:0}就表示不要返回密码:

User.findOne({_id:userid}, {'pwd':0}, function(err,doc){
  if(err){
    return res.json({code:1,msg:'服务正忙,请稍后再试'})
  }
  if(doc){
    return res.json({code:0,data:doc})
  }
})

如果改成{'username':1,'_id':0}呢?那就只会返回username,不会返回_id,也不会返回pwd。

User.findOne({_id:userid}, {'username':1,'_id':0}, function(err,doc){
  if(err){
    return res.json({code:1,msg:'服务正忙,请稍后再试'})
  }
  if(doc){
    return res.json({code:0,data:doc})
  }
})

解释

为什么是使用第二个参数进行过滤呢? find和findOne的使用方法很像,此处介绍findOne,它有两个可选参数,语法是:db.collection.findOne(query, projection)

第一个参数是使用query operators指定查询选择条件,此参数指定查什么。

第二个参数是使用projection operators指定返回的字段,省略此参数可以返回匹配文档中的所有字段。此参数指定返回什么。

具体的operators可以查看官网介绍,本文参考官方文档

- END -