9

我有一个带有 Mongoose ODM 的 NodeJS 应用程序。我想从集合中选择三个特定字段。例如,我的集合是“用户”,具有字段 '_id','username','email','usertype','password'... 我只想选择 'username','email'&'usertype' 。这是我的代码

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

这适用于 mongoose 2 版本,我更新到 Mongodb 2.2 和 Mongoose 3.3.1。现在我收到错误

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

任何人都可以提出解决方案吗?

4

2 回答 2

18

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

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

所以你应该使用:

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

或者

var query = models.User.find({}).select({UserName : 1, Email : 1, UserType: 1});
于 2012-10-25T09:09:33.507 回答
14

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

var query = models.User.find({}, 'UserName Email UserType');
于 2015-04-18T14:18:14.083 回答