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

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


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);


You can create sub-documents without schema and avoid _id. Just add _id: false to your subdocument declaration.

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

This will prevent the creation of an _id field in your subdoc.

Tested in Mongoose v5.9.10


Additionally, if you use an object literal syntax for specifying a sub-schema, you may also just add _id: false to supress it.

{   sub: {      property1: String,      property2: String,      _id: false   }}