在MongooseJs中select特定的字段

我有一个使用Mongoose ODM的NodeJS应用程序。 我想从集合中select三个特定的字段。 示例我的collections是“用户”字段'_id','用户名','电子邮件','usertype','密码'…我只想select'用户名','电子邮件'和'usertype'。 这是我的代码

var query = models.User.find({}).select('UserName', 'Email', 'UserType'); 

这与mongoose2版本正常工作,我更新到Mongodb 2.2和Mongoose 3.3.1。 现在我得到错误

 500 TypeError: Invalid select() argument. Must be a string or object. 

任何人都可以请build议解决scheme?

由于mongoose3 select()参数可以是:

  • 包含排除/包含字段的0-1映射的对象
  • 一个以空格分隔的字段名string(带-在需要排除的字段之前)

所以你应该使用:

 var query = models.User.find({}).select('UserName Email UserType'); 

要么

 var query = models.User.find({}).select({UserName : 1, Email : 1, UserType: 1}); 

从Mongoose版本4开始,你不需要select()。

 var query = models.User.find({}, 'UserName Email UserType');