Mongoose对id字段的请求返回id和_id

时间:2015-01-08 12:28:56

标签: javascript json node.js mongodb mongoose

在我的Mongoose架构中,我有一个id字段,每个文档都有一个唯一的ID。这将运行默认_id字段所使用的相同系统,如下所示:

var JobSchema = new mongoose.Schema({
  id: { type:String, required:true, unique:true, index:true, default:mongoose.Types.ObjectId },
  title: { type: String },
  brief: { type: String }
});

module.exports = mongoose.model("Job", JobSchema);

现在,如果我查询架构以获取ID和标题,我就这样做:

Job.find().select("id title").exec(function(err, jobs) {
  if (err) throw err;
  res.send(jobs);
});

但是,我发现这会按预期返回idtitle,但它也会返回默认的_id字段。为什么这样,我该如何制止呢?

2 个答案:

答案 0 :(得分:2)

find()功能中,您可以传递两个参数(条件和投影)。投影是您想要(或不想要)的领域。在您的情况下,您可以将代码更改为

Job.find({}, {_id:0, id: 1, title: 1}, function(err, jobs) {
    if (err) throw err;
    res.send(jobs);
});

它应该这样做。

答案 1 :(得分:0)

有一个选项可以防止在架构级别使用ID。 对我来说,这很好用。

new Schema({ name: String }, { id: false });

Mongoose Docs