使用findById |返回指定的字段Mongoose MongoDB

时间:2017-12-20 22:32:00

标签: mongodb mongoose

当使用Model.findOne()方法时,我可以选择包含一个字符串,将我的返回值限制为那些字段,但是当我尝试使用findById方法时,它似乎无法解决。

以下示例是一个人为的例子。我使用的是真正的_id,它在使用第一个示例时有效,但我只想使用findById方法,因为我心中的一个小声音告诉我速度更快(也许)。

示例:

let Joe = new PersonModel({
  _id: ObjectId("12345")
  name: 'Joe',
  age: 30,
  password: 'GreatPW'
}).save(); 

现在找到乔,只返回他的名字和年龄。这有效!

PersonModel.findOne({_id: Joe._id}, 'name age')
  .then(person => console.log(person))

现在做同样的事情,但是使用findById()。这不适合我。

PersonModel.findById(Joe._id, 'name age')
  .then(person => console.log(person))

2 个答案:

答案 0 :(得分:1)

打开Mongoose的登录。你会发现这两个电话之间的唯一区别是从 findById findOne 的额外函数调用。

源代码参考:findById(由MikaS提供)

答案 1 :(得分:0)

我不确定,但我认为您需要在查询中和投影中写{}:

此:

PersonModel.findById(Joe._id, 'name age')

应该是这样

PersonModel.findById({idValueToFind}, {name:1, age:1, _id:0})