如何从Mongoose模式的嵌入式对象中删除_id?

时间:2018-08-27 20:56:05

标签: node.js mongodb mongoose mongoose-schema

我有这个Mongoose模式:

const User = mongoose.model('User', new Schema({
    id: String,
    name: String,
    extra: { bb: Number, chain: Number }
}), 'users');

当我看到一个新的User时,它的存储方式如下:

{ 
  _id: ...,
  id: '1234',
  name: 'John',
  extra: {
    _id: ...,
    bb: 54,
    chain: 7
  },
  __v: 1
}

如您所见,Mongoose(或我不知道的Mongo)在嵌入式对象_id中包含了extra。为什么会这样呢?如何防止它发生?

1 个答案:

答案 0 :(得分:2)

您可以为子模式声明“ _id:false”,如下所示。

const User = mongoose.model('User', new Schema({
     id: String,
     name: String,
     extra: { bb: Number, chain: Number, _id: false }
}), 'users');