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

Héc*_*tor 6 mongoose mongodb node.js mongoose-schema

我有这个猫鼬模式:

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

当我看到一个 new 时User,它是这样存储的:

{ 
  _id: ...,
  id: '1234',
  name: 'John',
  extra: {
    _id: ...,
    bb: 54,
    chain: 7
  },
  __v: 1
}
Run Code Online (Sandbox Code Playgroud)

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

小智 11

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

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