NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #4415 most downloaded on npm
Mongoose MongoDB ODM
Last release today
04 Oct 2026
Ships on a steady schedule
a new release about every 2 weeks
Nearly every release is documented
notes for 58 of the last 60 stable releases
4 versions withdrawn
withdrawn after publishing
16 years old
1021 releases · first in 2010
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
One column per quarter.
Nothing published for this version
Nothing published for this version
fix: avoid removing empty query filters in $and and $or #13086 #12898
$and and $or #13086 #12898Model.populate() #13070feat: upgrade to mongodb driver 4.14.0 #13036
fix(connection): delay calculating autoCreate and autoIndex until after initial connection established #13007 #12940 lpizzinidev
autoCreate and autoIndex until after initial connection established #13007 #12940 lpizzinidevfix(query): revert breaking changes introduced by #12797 #12999 lpizzinidev
fix(document): isModified should not be triggered when setting a nested boolean to the same value as previously #12994 lpizzinidev
feat(schema): add removeVirtual(path) function to schema #12920 IslandRhythms
$or conditions after strict applied #12898 0x0a0dfix(collection): handle creating model when connection disconnected with bufferCommands = false #12889
perf: improve performance of assignRawDocsToIdStructure for faster populate on large docs #12867 Uzlopak
fix(schema): propagate strictQuery to implicitly created schemas for embedded discriminators #12827 #12796
fix(query): avoid throwing circular dependency error if same object is used in multiple properties #12774 orgads
$locals parameters to getters/setters tutorial #12814 #12550 IslandRhythmsfeat: add deprecation warning for default strictQuery #12666
localField and foreignField for virtual populate #12657 #6963 IslandRhythmsfix(schema): copy indexes when calling add() with schema instance #12737 #12654
fix: allow setting global strictQuery after Schema creation #12717 #12703 lpizzinidev
fix(document): handle setting array to itself after saving and pushing a new value #12672 #12656
fix(discriminator): skip copying base schema plugins if applyPlugins == false #12613 #12604 lpizzinidev
applyPlugins == false #12613 #12604 lpizzinidevfix(query): select Map field with select: false when explicitly requested #12616 #12603 lpizzinidev
feat: upgrade to mongodb driver 4.11.0 #12446
fix: correct browser build and improve isAsyncFunction check for browser #12577 #12576 #12392
fix(update): handle runValidators when using $set on a doc array in discriminator schema #12571 #12518
fix(document): set defaults on subdocuments underneath init-ed single nested subdocument #12523 #12515
fix(model): avoid saving applied defaults if path is deselected #12506 #12414
fix(query): treat findOne(_id) as equivalent to findOne({ _id }) #12485 #12325
fix(model): avoid deleting shared schema methods in fix for #12254 #12423
select: false on map paths in query results #12467 lpizzinidevfix: correctly apply defaults after subdoc init #12328
feat: upgrade mongodb driver -> 4.9.1 #12370 AbdelrahmanHafez
fix(setDefaultsOnInsert): avoid applying defaults on insert if nested property set #12279
fix(document): allow calling $assertPopulated() with values to better support manual population #12233
fix(document): handle maps when applying defaults to nested paths #12322
discriminator() generic #10349connection.model() #12298 #12125 hasezoeyfindById() type definitions #12309 lpizzinidevfix(aggregate): avoid throwing error when disconnecting with change stream open #12201 ramos-ph
Connection.prototype.model() #12240 hasezoeyfix(timestamps): set timestamps on child schema when child schema has timestamps: true but parent schema does not #12119
perf(document): avoid creating unnecessary empty objects when creating a state machine #11988
docs: make use of the deprecated tag available in jsdoc for documentation #12080 hasezoey
fix(schema): disallow setting __proto__ when creating schema with dotted properties #12085
isObjectIdOrHexString() #12123 LokeshKanumoorifix(model+timestamps): set timestamps on subdocuments in insertMany() #12060
Require_id to better support _id: String with auto-typed schemas #12070fix(types): allow using an object to configure timestamps #12061 lantw44
fix(document): handle validating deeply nested subdocuments underneath nested paths with required: false #12021
SchemaType.path() #11987fix: keep autoIndex & autoCreate as true by default if read preference is primaryPreferred #11976
fix(schema): allow 0 for numbers if required and ref both set #11912
UpdateFilter #11911feat: upgrade mongodb driver -> 4.7.0 #11909 AbdelrahmanHafez
transform option to lean() #10423 IslandRhythmson from schema reserved keys #11580 IslandRhythmsfix(document): handle nested paths underneath subdocuments when getting all subdocuments for pre save hooks #11917
fix: revert 670b445b0fc perf optimizations that caused some test failures #11541
Nothing published for this version
fix(update): apply timestamps to nested subdocs within $push and $addToSet #11775
toObject() options #11776fix(document): avoid infinite recursion when calling toObject() on self-referencing document #11756
fix(schema): disallow using schemas with schema-level projection with map subdocuments #11698
distinct() and hint with findOneAndUpdate() #11793deleteModel() with RegExp in TypeScript #11812perf: avoid leaking memory when using populate() with QueryCursor because of reusing populate options with _docs #11641
_docs #11641_id back for LeanDocument #11769 #11761 taxilianinsertOne and replaceOne #11663perf: avoid registering event listeners on subdocuments to reduce memory usage #11541
perf: improve perf of key order #11639 Uzlopak
ref #11538createCollection() #11539extends Document #11629fix: upgrade mongodb driver -> 4.5.0 #11623 AbdelrahmanHafez
removeIndex() and clearIndex() #11547 IslandRhythmscontinueOnError option to allow executing eachAsync() on all docs even if error occurs #6355versionKey option to lean() for removing version key from lean docs #8934 IslandRhythmsfix(document): handle validation with triply nested document arrays #11564
docs(typescript): add note about deprecating extends Document #11619 AbdelrahmanHafez
perf(document+model): make a few small optimizations #11380
expires option #11557 boly38refPath example #11565 chandiwalaaadhardocs(migrating_to_6): describe breaking change in Mongoose 6 about default query populate model #11289
this = any in middleware #11435perf(document): avoid running validation on every array element if there's no validators to run #11380
Your coding agent can read these notes before it upgrades. Set up the MCP server →