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?
You can create sub-documents without schema and avoid _id. Just add _id:false to your subdocument declaration.
This will prevent the creation of an _id field in your subdoc. Tested in Mongoose 3.8.1
I'm using mongoose 4.6.3 and all I had to do was add _id: false in the schema, no need to make a subschema.
Additionally, if you use an object literal syntax for specifying a sub-schema, you may also just add
_id: false
to supress it.You can use either of the one
or
Check your mongoose version before using the second option
It's simple, you can define this in the subschema :