当在find中排除时,Mongoose返回默认值

时间:2015-07-08 07:22:42

标签: node.js mongoose

我的用户架构是,

{
  _id: String,
  name: String,
  status: {type: String, "default": "notverified" }
}

在我的mongoose查询中,我需要从结果中排除status字段。

我的模型查询就像,

User.find({}, {status: false}, function(err, users) {
   // process the error
   if (err) console.error(err);

   // process the result
   console.log(users);
});

在上面的查询中,我排除了status,但在结果中我得到了具有在架构中定义的默认值的文档。即status: "notverified"

尽管Mongoose存在问题,但为了快速解决问题,我尝试了How to exclude some fields from the document中提到的方法。

但它不起作用,因为查询返回单个文档,因此toObject()将起作用,但我想从没有toObject()方法的文档数组中排除。

任何其他可行的解决方案(在将其标记为重复之前)?

1 个答案:

答案 0 :(得分:2)

你滥用了Mongoose的预测:

User.find({}, {status: 0}, function(err, users) {
  // process the error
  if (err) console.error(err);
  // process the result
  console.log(users);
});