Search code examples
node.jsmongodbmongoosesubdocument

Stop Mongoose from creating _id property for sub-document array items


If you have subdocument arrays, Mongoose automatically creates ids for each one. Example:

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

Is there a way to tell Mongoose to not create ids for objects within an array?


Solution

  • It's simple, you can define this in the subschema :

    var mongoose = require("mongoose");
    
    var subSchema = mongoose.Schema({
        // your subschema content
    }, { _id : false });
    
    var schema = mongoose.Schema({
        // schema content
        subSchemaCollection : [subSchema]
    });
    
    var model = mongoose.model('tablename', schema);