选择MongooseJs中的特定字段

dan*_*any 9 javascript mongoose mongodb node.js

我有一个使用Mongoose ODM的NodeJS应用程序.我想从集合中选择三个特定字段.我的收藏示例是"用户",其字段为"_id","用户名","电子邮件","用户类型","密码"...我只想选择"用户名","电子邮件"和"用户类型".这是我的代码

 var query = models.User.find({}).select('UserName', 'Email', 'UserType');
Run Code Online (Sandbox Code Playgroud)

这与mongoose 2版本工作正常,我更新到Mongodb 2.2和Mongoose 3.3.1.现在我收到了错误

500 TypeError: Invalid select() argument. Must be a string or object.
Run Code Online (Sandbox Code Playgroud)

有人可以建议一个解决方案?

sou*_*eck 16

由于mongoose 3 select()参数可以是:

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

所以你应该使用:

var query = models.User.find({}).select('UserName Email UserType');
Run Code Online (Sandbox Code Playgroud)

要么

var query = models.User.find({}).select({UserName : 1, Email : 1, UserType: 1});
Run Code Online (Sandbox Code Playgroud)


小智 12

从Mongoose版本4开始,您不需要select().

var query = models.User.find({}, 'UserName Email UserType');
Run Code Online (Sandbox Code Playgroud)