阻止猫鼬为子文档数组项创建_id属性

如果您有子文档数组,Mongoose会自动为每个数组创建ID。例:

{
    _id: "mainId"
    subDocArray: [
      {
        _id: "unwantedId",
        field: "value"
      },
      {
        _id: "unwantedId",
        field: "value"
      }
    ]
}

有没有办法告诉猫鼬不要为数组内的对象创建ID?

神乐Tony阿飞2020/03/23 14:21:41

您可以使用任何一个

var subSchema = mongoose.Schema({
//subschema fields    

},{ _id : false });

要么

var subSchema = mongoose.Schema({
//subschema content
_id : false    

});

在使用第二个选项之前,请检查您的猫鼬版本

樱小胖Mandy2020/03/23 14:21:41

此外,如果使用对象文字语法指定子模式,则也可以添加限制_id: false

{
   sub: {
      property1: String,
      property2: String,
      _id: false
   }
}
宝儿理查德2020/03/23 14:21:41

我正在使用猫鼬4.6.3,我所要做的就是在模式中添加_id:false,无需进行子模式处理。

{
    _id: ObjectId
    subDocArray: [
      {
        _id: false,
        field: "String"
      }
    ]
}
番长樱梅2020/03/23 14:21:41

您可以创建不带模式的子文档,并避免使用_id。只需将_id:false添加到您的子文档声明中即可。

var schema = new mongoose.Schema({
   field1:{type:String},
   subdocArray:[{
      _id:false,
      field :{type:String}
   }]
});

这将阻止在子文档中创建_id字段。在猫鼬3.8.1中测试