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 }}