mongoose-diff-tracking
Version:
Manage Mongo Collection diff History and versions
980 lines (872 loc) • 119 kB
Markdown
4.4.4 / 2016-02-17
==================
* fix(schema): handle field selection when casting single nested subdocs #3880
* fix(populate): populating using base model with multiple child models in result #3878
* fix: ability to properly use return value of `mongoose.connect()` #3874
* fix(populate): dont hydrate populated subdoc if lean option set #3873
* fix(connection): dont re-auth if already connected with useDb #3871
* docs: cover how to set underlying driver's promise lib #3869
* fix(document): handle conflicting names in validation errors with subdocs #3867
* fix(populate): set undefined instead of null consistently when populate couldn't find results #3859
* docs: link to `execPopulate()` in `doc.populate()` docs #3836
* docs(plugin): link to the `mongoose.plugin()` function #3732
4.4.3 / 2016-02-09
==================
* fix: upgrade to mongodb 2.1.6 to remove kerberos log output #3861 #3860 [cartuchogl](https://github.com/cartuchogl)
* fix: require('mongoose') is no longer a pseudo-promise #3856
* fix(query): update casting for single nested docs #3820
* fix(populate): deep populating multiple paths with same options #3808
* docs(middleware): clarify save/validate hook order #1149
4.4.2 / 2016-02-05
==================
* fix(aggregate): handle calling .cursor() with no options #3855
* fix: upgrade mongodb driver to 2.1.5 for GridFS memory leak fix #3854
* docs: fix schematype.html conflict #3853 #3850 #3843
* fix(model): bluebird unhandled rejection with ensureIndexes() on init #3837
* docs: autoIndex option for createConnection #3805
4.4.1 / 2016-02-03
==================
* fix: linting broke some cases where we use `== null` as shorthand #3852
* docs: fix up schematype.html conflict #3848 #3843 [mynameiscoffey](https://github.com/mynameiscoffey)
* fix: backwards breaking change with `.connect()` return value #3847
* docs: downgrade dox and highlight.js to fix docs build #3845
* docs: clean up typo #3842 [Flash-](https://github.com/Flash-)
* fix(document): storeShard handles undefined values #3841
* chore: more linting #3838 [TrejGun](https://github.com/TrejGun)
* fix(schema): handle `text: true` as a way to declare a text index #3824
4.4.0 / 2016-02-02
==================
* docs: fix expireAfterSeconds index option name #3831 [Flash-](https://github.com/Flash-)
* chore: run lint after test #3829 [ChristianMurphy](https://github.com/ChristianMurphy)
* chore: use power-assert instead of assert #3828 [TrejGun](https://github.com/TrejGun)
* chore: stricter lint #3827 [TrejGun](https://github.com/TrejGun)
* feat(types): casting moment to date #3813 [TrejGun](https://github.com/TrejGun)
* chore: comma-last lint for test folder #3810 [ChristianMurphy](https://github.com/ChristianMurphy)
* fix: upgrade async mpath, mpromise, muri, and sliced #3801 [TrejGun](https://github.com/TrejGun)
* fix(query): geo queries now return proper ES2015 promises #3800 [TrejGun](https://github.com/TrejGun)
* perf(types): use `Object.defineProperties()` for array #3799 [TrejGun](https://github.com/TrejGun)
* fix(model): mapReduce, ensureIndexes, remove, and save properly return ES2015 promises #3795 #3628 #3595 [TrejGun](https://github.com/TrejGun)
* docs: fixed dates in History.md #3791 [Jokero](https://github.com/Jokero)
* feat: connect, open, openSet, and disconnect return ES2015 promises #3790 #3622 [TrejGun](https://github.com/TrejGun)
* feat: custom type for int32 via mongoose-int32 npm package #3652 #3102
* feat: basic custom schema type API #995
* feat(model): `insertMany()` for more performant bulk inserts #723
4.3.7 / 2016-01-23
==================
* docs: grammar fix in timestamps docs #3786 [zclancy](https://github.com/zclancy)
* fix(document): setting nested populated docs #3783 [slamuu](https://github.com/slamuu)
* fix(document): don't call post save hooks twice for pushed docs #3780
* fix(model): handle `_id=0` correctly #3776
* docs(middleware): async post hooks #3770
* docs: remove confusing sentence #3765 [marcusmellis89](https://github.com/marcusmellis89)
3.8.39 / 2016-01-15
===================
* fixed; casting a number to a buffer #3764
* fixed; enumerating virtual property with nested objects #3743 [kusold](https://github.com/kusold)
4.3.6 / 2016-01-15
==================
* fix(types): casting a number to a buffer #3764
* fix: add "listener" to reserved keywords #3759
* chore: upgrade uglify #3757 [ChristianMurphy](https://github.com/ChristianMurphy)
* fix: broken execPopulate() in 4.3.5 #3755 #3753
* fix: ability to remove() a single embedded doc #3754
* style: comma-last in test folder #3751 [ChristianMurphy](https://github.com/ChristianMurphy)
* docs: clarify versionKey option #3747
* fix: improve colorization for arrays #3744 [TrejGun](https://github.com/TrejGun)
* fix: webpack build #3713
4.3.5 / 2016-01-09
==================
* fix(query): throw when 4th parameter to update not a function #3741 [kasselTrankos](https://github.com/kasselTrankos)
* fix(document): separate error type for setting an object to a primitive #3735
* fix(populate): Model.populate returns ES6 promise #3734
* fix(drivers): re-register event handlers after manual reconnect #3729
* docs: broken links #3727
* fix(validation): update validators run array validation #3724
* docs: clarify the need to use markModified with in-place date ops #3722
* fix(document): mark correct path as populated when manually populating array #3721
* fix(aggregate): support for array pipeline argument to append #3718 [dbkup](https://github.com/dbkup)
* docs: clarify `.connect()` callback #3705
* fix(schema): properly validate nested single nested docs #3702
* fix(types): handle setting documentarray of wrong type #3701
* docs: broken links #3700
* fix(drivers): debug output properly displays '0' #3689
3.8.38 / 2016-01-07
===================
* fixed; aggregate.append an array #3730 [dbkup](https://github.com/dbkup)
4.3.4 / 2015-12-23
==================
* fix: upgrade mongodb driver to 2.1.2 for repl set error #3712 [sansmischevia](https://github.com/sansmischevia)
* docs: validation docs typo #3709 [ivanmaeder](https://github.com/ivanmaeder)
* style: remove unused variables #3708 [ChristianMurphy](https://github.com/ChristianMurphy)
* fix(schema): duck-typing for schemas #3703 [mgcrea](https://github.com/mgcrea)
* docs: connection sample code issue #3697
* fix(schema): duck-typing for schemas #3693 [mgcrea](https://github.com/mgcrea)
* docs: clarify id schema option #3638
4.3.3 / 2015-12-18
==================
* fix(connection): properly support 'replSet' as well as 'replset' #3688 [taxilian](https://github.com/taxilian)
* fix(document): single nested doc pre hooks called before nested doc array #3687 [aliatsis](https://github.com/aliatsis)
4.3.2 / 2015-12-17
==================
* fix(document): .set() into single nested schemas #3686
* fix(connection): support 'replSet' as well as 'replset' option #3685
* fix(document): bluebird unhandled rejection when validating doc arrays #3681
* fix(document): hooks for doc arrays in single nested schemas #3680
* fix(document): post hooks for single nested schemas #3679
* fix: remove unused npm module #3674 [sybarite](https://github.com/sybarite)
* fix(model): don't swallow exceptions in nested doc save callback #3671
* docs: update keepAlive info #3667 [ChrisZieba](https://github.com/ChrisZieba)
* fix(document): strict 'throw' throws a specific mongoose error #3662
* fix: flakey test #3332
* fix(query): more robust check for RegExp #2969
4.3.1 / 2015-12-11
==================
* feat(aggregate): `.sample()` helper #3665
* fix(query): bitwise query operators with buffers #3663
* docs(migration): clarify `new` option and findByIdAndUpdate #3661
4.3.0 / 2015-12-09
==================
* feat(query): support for mongodb 3.2 bitwise query operators #3660
* style: use comma-last style consistently #3657 [ChristianMurphy](https://github.com/ChristianMurphy)
* feat: upgrade mongodb driver to 2.1.0 for full MongoDB 3.2 support #3656
* feat(aggregate): `.lookup()` helper #3532
4.2.10 / 2015-12-08
===================
* fixed; upgraded marked #3653 [ChristianMurphy](https://github.com/ChristianMurphy)
* docs; cross-db populate #3648
* docs; update mocha URL #3646 [ojhaujjwal](https://github.com/ojhaujjwal)
* fixed; call close callback asynchronously #3645
* docs; virtuals.html issue #3644 [Psarna94](https://github.com/Psarna94)
* fixed; single embedded doc casting on init #3642
* docs; validation docs improvements #3640
4.2.9 / 2015-12-02
==================
* docs; defaults docs #3625
* fix; nested numeric keys causing an embedded document crash #3623
* fix; apply path getters before virtual getters #3618
* fix; casting for arrays in single nested schemas #3616
4.2.8 / 2015-11-25
==================
* docs; clean up README links #3612 [ReadmeCritic](https://github.com/ReadmeCritic)
* fix; ESLint improvements #3605 [ChristianMurphy](https://github.com/ChristianMurphy)
* fix; assigning single nested subdocs #3601
* docs; describe custom logging functions in `mongoose.set()` docs #3557
4.2.7 / 2015-11-20
==================
* fixed; readPreference connection string option #3600
* fixed; pulling from manually populated arrays #3598 #3579
* docs; FAQ about OverwriteModelError #3597 [stcruy](https://github.com/stcruy)
* fixed; setting single embedded schemas to null #3596
* fixed; indexes for single embedded schemas #3594
* docs; clarify projection for `findOne()` #3593 [gunar](https://github.com/gunar)
* fixed; .ownerDocument() method on single embedded schemas #3589
* fixed; properly throw casterror for query on single embedded schema #3580
* upgraded; mongodb driver -> 2.0.49 for reconnect issue fix #3481
4.2.6 / 2015-11-16
==================
* fixed; ability to manually populate an array #3575
* docs; clarify `isAsync` parameter to hooks #3573
* fixed; use captureStackTrace if possible instead #3571
* fixed; crash with buffer and update validators #3565 [johnpeb](https://github.com/johnpeb)
* fixed; update casting with operators overwrite: true #3564
* fixed; validation with single embedded docs #3562
* fixed; inline docs inherit parents $type key #3560
* docs; bad grammar in populate docs #3559 [amaurymedeiros](https://github.com/amaurymedeiros)
* fixed; properly handle populate option for find() #2321
3.8.37 / 2015-11-16
===================
* fixed; use retainKeyOrder for cloning update op #3572
4.2.5 / 2015-11-09
==================
* fixed; handle setting fields in pre update hooks with exec #3549
* upgraded; ESLint #3547 [ChristianMurphy](https://github.com/ChristianMurphy)
* fixed; bluebird unhandled rejections with cast errors and .exec #3543
* fixed; min/max validators handling undefined #3539
* fixed; standalone mongos connections #3537
* fixed; call `.toObject()` when setting a single nested doc #3535
* fixed; single nested docs now have methods #3534
* fixed; single nested docs with .create() #3533 #3521 [tusbar](https://github.com/tusbar)
* docs; deep populate docs #3528
* fixed; deep populate schema ref handling #3507
* upgraded; mongodb driver -> 2.0.48 for sort overflow issue #3493
* docs; clarify default ids for discriminators #3482
* fixed; properly support .update(doc) #3221
4.2.4 / 2015-11-02
==================
* fixed; upgraded `ms` package for security vulnerability #3254 [fhemberger](https://github.com/fhemberger)
* fixed; ESlint rules #3517 [ChristianMurphy](https://github.com/ChristianMurphy)
* docs; typo in aggregation docs #3513 [rafakato](https://github.com/rafakato)
* fixed; add `dontThrowCastError` option to .update() for promises #3512
* fixed; don't double-cast buffers in node 4.x #3510 #3496
* fixed; population with single embedded schemas #3501
* fixed; pre('set') hooks work properly #3479
* docs; promises guide #3441
4.2.3 / 2015-10-26
==================
* docs; remove unreferenced function in middleware.jade #3506
* fixed; handling auth with no username/password #3500 #3498 #3484 [mleanos](https://github.com/mleanos)
* fixed; more ESlint rules #3491 [ChristianMurphy](https://github.com/ChristianMurphy)
* fixed; swallowing exceptions in save callback #3478
* docs; fixed broken links in subdocs guide #3477
* fixed; casting booleans to numbers #3475
* fixed; report CastError for subdoc arrays in findOneAndUpdate #3468
* fixed; geoNear returns ES6 promise #3458
4.2.2 / 2015-10-22
==================
* fixed; go back to old pluralization code #3490
4.2.1 / 2015-10-22
==================
* fixed; pluralization issues #3492 [ChristianMurphy](https://github.com/ChristianMurphy)
4.2.0 / 2015-10-22
==================
* added; support for skipVersioning for document arrays #3467 [chazmo03](https://github.com/chazmo03)
* added; ability to customize schema 'type' key #3459 #3245
* fixed; writeConcern for index builds #3455
* added; emit event when individual index build starts #3440 [objectiveSee](https://github.com/objectiveSee)
* added; 'context' option for update validators #3430
* refactor; pluralization now in separate pluralize-mongoose npm module #3415 [ChristianMurphy](https://github.com/ChristianMurphy)
* added; customizable error validation messages #3406 [geronime](https://github.com/geronime)
* added; support for passing 'minimize' option to update #3381
* added; ability to customize debug logging format #3261
* added; baseModelName property for discriminator models #3202
* added; 'emitIndexErrors' option #3174
* added; 'async' option for aggregation cursor to support buffering #3160
* added; ability to skip validation for individual save() calls #2981
* added; single embedded schema support #2689 #585
* added; depopulate function #2509
4.1.12 / 2015-10-19
===================
* docs; use readPreference instead of slaveOk for Query.setOptions docs #3471 [buunguyen](https://github.com/buunguyen)
* fixed; more helpful error when regexp contains null bytes #3456
* fixed; x509 auth issue #3454 [NoxHarmonium](https://github.com/NoxHarmonium)
3.8.36 / 2015-10-18
===================
* fixed; Make array props non-enumerable #3461 [boblauer](https://github.com/boblauer)
4.1.11 / 2015-10-12
===================
* fixed; update timestamps for update() if they're enabled #3450 [isayme](https://github.com/isayme)
* fixed; unit test error on node 0.10 #3449 [isayme](https://github.com/isayme)
* docs; timestamp option docs #3448 [isayme](https://github.com/isayme)
* docs; fix unexpected indent #3443 [isayme](https://github.com/isayme)
* fixed; use ES6 promises for Model.prototype.remove() #3442
* fixed; don't use unused 'safe' option for index builds #3439
* fixed; elemMatch casting bug #3437 #3435 [DefinitelyCarter](https://github.com/DefinitelyCarter)
* docs; schema.index docs #3434
* fixed; exceptions in save() callback getting swallowed on mongodb 2.4 #3371
4.1.10 / 2015-10-05
===================
* docs; improve virtuals docs to explain virtuals schema option #3433 [zoyaH](https://github.com/zoyaH)
* docs; MongoDB server version compatibility guide #3427
* docs; clarify that findById and findByIdAndUpdate fire hooks #3422
* docs; clean up Model.save() docs #3420
* fixed; properly handle projection with just id #3407 #3412
* fixed; infinite loop when database document is corrupted #3405
* docs; clarify remove middleware #3388
4.1.9 / 2015-09-28
==================
* docs; minlength and maxlength string validation docs #3368 #3413 [cosmosgenius](https://github.com/cosmosgenius)
* fixed; linting for infix operators #3397 [ChristianMurphy](https://github.com/ChristianMurphy)
* fixed; proper casting for $all #3394
* fixed; unhandled rejection warnings with .create() #3391
* docs; clarify update validators on paths that aren't explicitly set #3386
* docs; custom validator examples #2778
4.1.8 / 2015-09-21
==================
* docs; fixed typo in example #3390 [kmctown](https://github.com/kmctown)
* fixed; error in toObject() #3387 [guumaster](https://github.com/guumaster)
* fixed; handling for casting null dates #3383 [alexmingoia](https://github.com/alexmingoia)
* fixed; passing composite ids to `findByIdAndUpdate` #3380
* fixed; linting #3376 #3375 [ChristianMurphy](https://github.com/ChristianMurphy)
* fixed; added NodeJS v4 to Travis #3374 [ChristianMurphy](https://github.com/ChristianMurphy)
* fixed; casting $elemMatch inside of $not #3373 [gaguirre](https://github.com/gaguirre)
* fixed; handle case where $slice is 0 #3369
* fixed; avoid running getters if path is populated #3357
* fixed; cast documents to objects when setting to a nested path #3346
4.1.7 / 2015-09-14
==================
* docs; typos in SchemaType documentation #3367 [jasson15](https://github.com/jasson15)
* fixed; MONGOOSE_DRIVER_PATH env variable again #3360
* docs; added validateSync docs #3353
* fixed; set findOne op synchronously in query #3344
* fixed; handling for `.pull()` on a documentarray without an id #3341
* fixed; use natural order for cloning update conditions #3338
* fixed; issue with strict mode casting for mixed type updates #3337
4.1.6 / 2015-09-08
==================
* fixed; MONGOOSE_DRIVER_PATH env variable #3345 [g13013](https://github.com/g13013)
* docs; global autoIndex option #3335 [albertorestifo](https://github.com/albertorestifo)
* docs; model documentation typos #3330
* fixed; report reason for CastError #3320
* fixed; .populate() no longer returns true after re-assigning #3308
* fixed; discriminators with aggregation geoNear #3304
* docs; discriminator docs #2743
4.1.5 / 2015-09-01
==================
* fixed; document.remove() removing all docs #3326 #3325
* fixed; connect() checks for rs_name in options #3299
* docs; examples for schema.set() #3288
* fixed; checkKeys issue with bluebird #3286 [gregthegeek](https://github.com/gregthegeek)
4.1.4 / 2015-08-31
==================
* fixed; ability to set strict: false for update #3305
* fixed; .create() properly uses ES6 promises #3297
* fixed; pre hooks on nested subdocs #3291 #3284 [aliatsis](https://github.com/aliatsis)
* docs; remove unclear text in .remove() docs #3282
* fixed; pre hooks called twice for 3rd-level nested doc #3281
* fixed; nested transforms #3279
* upgraded; mquery -> 1.6.3 #3278 #3272
* fixed; don't swallow callback errors by default #3273 #3222
* fixed; properly get nested paths from nested schemas #3265
* fixed; remove() with id undefined deleting all docs #3260 [thanpolas](https://github.com/thanpolas)
* fixed; handling for non-numeric projections #3256
* fixed; findById with id undefined returning first doc #3255
* fixed; use retainKeyOrder for update #3215
* added; passRawResult option to findOneAndUpdate for backwards compat #3173
4.1.3 / 2015-08-16
==================
* fixed; getUpdate() in pre update hooks #3520 [gregthegeek](https://github.com/gregthegeek)
* fixed; handleArray() ensures arg is an array #3238 [jloveridge](https://github.com/jloveridge)
* fixed; refresh required path cache when recreating docs #3199
* fixed; $ operator on unwind aggregation helper #3197
* fixed; findOneAndUpdate() properly returns raw result as third arg to callback #3173
* fixed; querystream with dynamic refs #3108
3.8.35 / 2015-08-14
===================
* fixed; handling for minimize on nested objects #2930
* fixed; don't crash when schema.path.options undefined #1824
4.1.2 / 2015-08-10
==================
* fixed; better handling for Jade templates #3241 [kbadk](https://github.com/kbadk)
* added; ESlint trailing spaces #3234 [ChristianMurphy](https://github.com/ChristianMurphy)
* added; ESlint #3191 [ChristianMurphy](https://github.com/ChristianMurphy)
* fixed; properly emit event on disconnect #3183
* fixed; copy options properly using Query.toConstructor() #3176
* fixed; setMaxListeners() issue in browser build #3170
* fixed; node driver -> 2.0.40 to not store undefined keys as null #3169
* fixed; update validators handle positional operator #3167
* fixed; handle $all + $elemMatch query casting #3163
* fixed; post save hooks don't swallow extra args #3155
* docs; spelling mistake in index.jade #3154
* fixed; don't crash when toObject() has no fields #3130
* fixed; apply toObject() recursively for find and update queries #3086 [naoina](https://github.com/naoina)
4.1.1 / 2015-08-03
==================
* fixed; aggregate exec() crash with no callback #3212 #3198 [jpgarcia](https://github.com/jpgarcia)
* fixed; pre init hooks now properly synchronous #3207 [burtonjc](https://github.com/burtonjc)
* fixed; updateValidators doesn't flatten dates #3206 #3194 [victorkohl](https://github.com/victorkohl)
* fixed; default fields don't make document dirty between saves #3205 [burtonjc](https://github.com/burtonjc)
* fixed; save passes 0 as numAffected rather than undefined when no change #3195 [burtonjc](https://github.com/burtonjc)
* fixed; better handling for positional operator in update #3185
* fixed; use Travis containers #3181 [ChristianMurphy](https://github.com/ChristianMurphy)
* fixed; leaked variable #3180 [ChristianMurphy](https://github.com/ChristianMurphy)
4.1.0 / 2015-07-24
==================
* added; `schema.queue()` now public #3193
* added; raw result as third parameter to findOneAndX callback #3173
* added; ability to run validateSync() on only certain fields #3153
* added; subPopulate #3103 [timbur](https://github.com/timbur)
* added; $isDefault function on documents #3077
* added; additional properties for built-in validator messages #3063 [KLicheR](https://github.com/KLicheR)
* added; getQuery() and getUpdate() functions for Query #3013
* added; export DocumentProvider #2996
* added; ability to remove path from schema #2993 [JohnnyEstilles](https://github.com/JohnnyEstilles)
* added; .explain() helper for aggregate #2714
* added; ability to specify which ES6-compatible promises library mongoose uses #2688
* added; export Aggregate #1910
4.0.8 / 2015-07-20
==================
* fixed; assignment with document arrays #3178 [rosston](https://github.com/rosston)
* docs; remove duplicate paragraph #3164 [rhmeeuwisse](https://github.com/rhmeeuwisse)
* docs; improve findOneAndXYZ parameter descriptions #3159 [rhmeeuwisse](https://github.com/rhmeeuwisse)
* docs; add findOneAndRemove to list of supported middleware #3158
* docs; clarify ensureIndex #3156
* fixed; refuse to save/remove document without id #3118
* fixed; hooks next() no longer accidentally returns promise #3104
* fixed; strict mode for findOneAndUpdate #2947
* added; .min.js.gz file for browser component #2806
3.8.34 / 2015-07-20
===================
* fixed; allow using $rename #3171
* fixed; no longer modifies update arguments #3008
4.0.7 / 2015-07-11
==================
* fixed; documentarray id method when using object id #3157 [siboulet](https://github.com/siboulet)
* docs; improve findById docs #3147
* fixed; update validators handle null properly #3136 [odeke-em](https://github.com/odeke-em)
* docs; jsdoc syntax errors #3128 [rhmeeuwisse](https://github.com/rhmeeuwisse)
* docs; fix typo #3126 [rhmeeuwisse](https://github.com/rhmeeuwisse)
* docs; proper formatting in queries.jade #3121 [rhmeeuwisse](https://github.com/rhmeeuwisse)
* docs; correct example for string maxlength validator #3111 [rhmeeuwisse](https://github.com/rhmeeuwisse)
* fixed; setDefaultsOnInsert with arrays #3107
* docs; LearnBoost -> Automattic in package.json #3099
* docs; pre update hook example #3094 [danpe](https://github.com/danpe)
* docs; clarify query middleware example #3051
* fixed; ValidationErrors in strict mode #3046
* fixed; set findOneAndUpdate properties before hooks run #3024
3.8.33 / 2015-07-10
===================
* upgraded; node driver -> 1.4.38
* fixed; dont crash when `match` validator undefined
4.0.6 / 2015-06-21
==================
* upgraded; node driver -> 2.0.34 #3087
* fixed; apply setters on addToSet, etc #3067 [victorkohl](https://github.com/victorkohl)
* fixed; missing semicolons #3065 [sokolikp](https://github.com/sokolikp)
* fixed; proper handling for async doc hooks #3062 [gregthegeek](https://github.com/gregthegeek)
* fixed; dont set failed populate field to null if other docs are successfully populated #3055 [eloytoro](https://github.com/eloytoro)
* fixed; setDefaultsOnInsert with document arrays #3034 [taxilian](https://github.com/taxilian)
* fixed; setters fired on array items #3032
* fixed; stop validateSync() on first error #3025 [victorkohl](https://github.com/victorkohl)
* docs; improve query docs #3016
* fixed; always exclude _id when its deselected #3010
* fixed; enum validator kind property #3009
* fixed; mquery collection names #3005
* docs; clarify mongos option #3000
* docs; clarify that query builder has a .then() #2995
* fixed; race condition in dynamic ref #2992
3.8.31 / 2015-06-20
===================
* fixed; properly handle text search with discriminators and $meta #2166
4.0.5 / 2015-06-05
==================
* fixed; ObjectIds and buffers when mongodb driver is a sibling dependency #3050 #3048 #3040 #3031 #3020 #2988 #2951
* fixed; warn user when 'increment' is used in schema #3039
* fixed; setDefaultsOnInsert with array in schema #3035
* fixed; dont use default Object toString to cast to string #3030
* added; npm badge #3020 [odeke-em](https://github.com/odeke-em)
* fixed; proper handling for calling .set() with a subdoc #2782
* fixed; dont throw cast error when using $rename on non-string path #1845
3.8.30 / 2015-06-05
===================
* fixed; enable users to set all options with tailable() #2883
4.0.4 / 2015-05-28
==================
* docs; findAndModify new parameter correct default value #3012 [JonForest](https://github.com/JonForest)
* docs; clarify pluralization rules #2999 [anonmily](https://github.com/anonmily)
* fix; discriminators with schema methods #2978
* fix; make `isModified` a schema reserved keyword #2975
* fix; properly fire setters when initializing path with object #2943
* fix; can use `setDefaultsOnInsert` without specifying `runValidators` #2938
* fix; always set validation errors `kind` property #2885
* upgraded; node driver -> 2.0.33 #2865
3.8.29 / 2015-05-27
===================
* fixed; Handle JSON.stringify properly for nested docs #2990
4.0.3 / 2015-05-13
==================
* upgraded; mquery -> 1.5.1 #2983
* docs; clarify context for query middleware #2974
* docs; fix missing type -> kind rename in History.md #2961
* fixed; broken ReadPreference include on Heroku #2957
* docs; correct form for cursor aggregate option #2955
* fixed; sync post hooks now properly called after function #2949 #2925
* fixed; fix sub-doc validate() function #2929
* upgraded; node driver -> 2.0.30 #2926
* docs; retainKeyOrder for save() #2924
* docs; fix broken class names #2913
* fixed; error when using node-clone on a doc #2909
* fixed; no more hard references to bson #2908 #2906
* fixed; dont overwrite array values #2907 [naoina](https://github.com/naoina)
* fixed; use readPreference=primary for findOneAndUpdate #2899 #2823
* docs; clarify that update validators only run on $set and $unset #2889
* fixed; set kind consistently for built-in validators #2885
* docs; single field populated documents #2884
* fixed; nested objects are now enumerable #2880 [toblerpwn](https://github.com/toblerpwn)
* fixed; properly populate field when ref, lean, stream used together #2841
* docs; fixed migration guide jade error #2807
3.8.28 / 2015-05-12
===================
* fixed; proper handling for toJSON options #2910
* fixed; dont attach virtuals to embedded docs in update() #2046
4.0.2 / 2015-04-23
==================
* fixed; error thrown when calling .validate() on subdoc not in an array #2902
* fixed; rename define() to play nice with webpack #2900 [jspears](https://github.com/jspears)
* fixed; pre validate called twice with discriminators #2892
* fixed; .inspect() on mongoose.Types #2875
* docs; correct callback params for Model.update #2872
* fixed; setDefaultsOnInsert now works when runValidators not specified #2870
* fixed; Document now wraps EventEmitter.addListener #2867
* fixed; call non-hook functions in schema queue #2856
* fixed; statics can be mocked out for tests #2848 [ninelb](https://github.com/ninelb)
* upgraded; mquery 1.4.0 for bluebird bug fix #2846
* fixed; required validators run first #2843
* docs; improved docs for new option to findAndMody #2838
* docs; populate example now uses correct field #2837 [swilliams](https://github.com/swilliams)
* fixed; pre validate changes causing VersionError #2835
* fixed; get path from correct place when setting CastError #2832
* docs; improve docs for Model.update() function signature #2827 [irnc](https://github.com/irnc)
* fixed; populating discriminators #2825 [chetverikov](https://github.com/chetverikov)
* fixed; discriminators with nested schemas #2821
* fixed; CastErrors with embedded docs #2819
* fixed; post save hook context #2816
* docs; 3.8.x -> 4.x migration guide #2807
* fixed; proper _distinct copying for query #2765 [cdelauder](https://github.com/cdelauder)
3.8.27 / 2015-04-22
===================
* fixed; dont duplicate db calls on Q.ninvoke() #2864
* fixed; Model.find arguments naming in docs #2828
* fixed; Support ipv6 in connection strings #2298
3.8.26 / 2015-04-07
===================
* fixed; TypeError when setting date to undefined #2833
* fixed; handle CastError properly in distinct() with no callback #2786
* fixed; broken links in queries docs #2779
* fixed; dont mark buffer as modified when setting type initially #2738
* fixed; dont crash when using slice with populate #1934
4.0.1 / 2015-03-28
==================
* fixed; properly handle empty cast doc in update() with promises #2796
* fixed; unstable warning #2794
* fixed; findAndModify docs now show new option is false by default #2793
4.0.0 / 2015-03-25
==================
* fixed; on-the-fly schema docs typo #2783 [artiifix](https://github.com/artiifix)
* fixed; cast error validation handling #2775 #2766 #2678
* fixed; discriminators with populate() #2773 #2719 [chetverikov](https://github.com/chetverikov)
* fixed; increment now a reserved path #2709
* fixed; avoid sending duplicate object ids in populate() #2683
* upgraded; mongodb to 2.0.24 to properly emit reconnect event multiple times #2656
4.0.0-rc4 / 2015-03-14
======================
* fixed; toObject virtuals schema option handled properly #2751
* fixed; update validators work on document arrays #2733
* fixed; check for cast errors on $set #2729
* fixed; instance field set for all schema types #2727 [csdco](https://github.com/csdco)
* fixed; dont run other validators if required fails #2725
* fixed; custom getters execute on ref paths #2610
* fixed; save defaults if they were set when doc was loaded from db #2558
* fixed; pre validate now runs before pre save #2462
* fixed; no longer throws errors with --use_strict #2281
3.8.25 / 2015-03-13
===================
* fixed; debug output reverses order of aggregation keys #2759
* fixed; $eq is a valid query selector in 3.0 #2752
* fixed; upgraded node driver to 1.4.32 for handling non-numeric poolSize #2682
* fixed; update() with overwrite sets _id for nested docs #2658
* fixed; casting for operators in $elemMatch #2199
4.0.0-rc3 / 2015-02-28
======================
* fixed; update() pre hooks run before validators #2706
* fixed; setters not called on arrays of refs #2698 [brandom](https://github.com/brandom)
* fixed; use node driver 2.0.18 for nodejs 0.12 support #2685
* fixed; comments reference file that no longer exists #2681
* fixed; populated() returns _id of manually populated doc #2678
* added; ability to exclude version key in toObject() #2675
* fixed; dont allow setting nested path to a string #2592
* fixed; can cast objects with _id field to ObjectIds #2581
* fixed; on-the-fly schema getters #2360
* added; strict option for findOneAndUpdate() #1967
3.8.24 / 2015-02-25
===================
* fixed; properly apply child schema transforms #2691
* fixed; make copy of findOneAndUpdate options before modifying #2687
* fixed; apply defaults when parent path is selected #2670 #2629
* fixed; properly get ref property for nested paths #2665
* fixed; node driver makes copy of authenticate options before modifying them #2619
* fixed; dont block process exit when auth fails #2599
* fixed; remove redundant clone in update() #2537
4.0.0-rc2 / 2015-02-10
======================
* added; io.js to travis build
* removed; browser build dependencies not installed by default
* added; dynamic refpaths #2640 [chetverikov](https://github.com/chetverikov)
* fixed; dont call child schema transforms on parent #2639 [chetverikov](https://github.com/chetverikov)
* fixed; get rid of remove option if new is set in findAndModify #2598
* fixed; aggregate all document array validation errors #2589
* fixed; custom setters called when setting value to undefined #1892
3.8.23 / 2015-02-06
===================
* fixed; unset opts.remove when upsert is true #2519
* fixed; array saved as object when path is object in array #2442
* fixed; inline transforms #2440
* fixed; check for callback in count() #2204
* fixed; documentation for selecting fields #1534
4.0.0-rc1 / 2015-02-01
======================
* fixed; use driver 2.0.14
* changed; use transform: true by default #2245
4.0.0-rc0 / 2015-01-31
===================
* fixed; wrong order for distinct() params #2628
* fixed; handling no query argument to remove() #2627
* fixed; createModel and discriminators #2623 [ashaffer](https://github.com/ashaffer)
* added; pre('count') middleware #2621
* fixed; double validation calls on document arrays #2618
* added; validate() catches cast errors #2611
* fixed; respect replicaSet parameter in connection string #2609
* added; can explicitly exclude paths from versioning #2576 [csabapalfi](https://github.com/csabapalfi)
* upgraded; driver to 2.0.15 #2552
* fixed; save() handles errors more gracefully in ES6 #2371
* fixed; undefined is now a valid argument to findOneAndUpdate #2272
* changed; `new` option to findAndModify ops is false by default #2262
3.8.22 / 2015-01-24
===================
* upgraded; node-mongodb-native to 1.4.28 #2587 [Climax777](https://github.com/Climax777)
* added; additional documentation for validators #2449
* fixed; stack overflow when creating massive arrays #2423
* fixed; undefined is a valid id for queries #2411
* fixed; properly create nested schema index when same schema used twice #2322
* added; link to plugin generator in docs #2085 [huei90](https://github.com/huei90)
* fixed; optional arguments documentation for findOne() #1971 [nachinius](https://github.com/nachinius)
3.9.7 / 2014-12-19
===================
* added; proper cursors for aggregate #2539 [changyy](https://github.com/changyy)
* added; min/max built-in validators for dates #2531 [bshamblen](https://github.com/bshamblen)
* fixed; save and validate are now reserved keywords #2380
* added; basic documentation for browser component #2256
* added; find and findOne hooks (query middleware) #2138
* fixed; throw a DivergentArrayError when saving positional operator queries #2031
* added; ability to use options as a document property #1416
* fixed; document no longer inherits from event emitter and so domain and _events are no longer reserved #1351
* removed; setProfiling #1349
3.8.21 / 2014-12-18
===================
* fixed; syntax in index.jade #2517 [elderbas](https://github.com/elderbas)
* fixed; writable statics #2510 #2528
* fixed; overwrite and explicit $set casting #2515
3.9.6 / 2014-12-05
===================
* added; correctly run validators on each element of array when entire array is modified #661 #1227
* added; castErrors in validation #1013 [jondavidjohn](https://github.com/jondavidjohn)
* added; specify text indexes in schema fields #1401 [sr527](https://github.com/sr527)
* added; ability to set field with validators to undefined #1594 [alabid](https://github.com/alabid)
* added; .create() returns an array when passed an array #1746 [alabid](https://github.com/alabid)
* added; test suite and docs for use with co and yield #2177 #2474
* fixed; subdocument toObject() transforms #2447 [chmanie](https://github.com/chmanie)
* fixed; Model.create() with save errors #2484
* added; pass options to .save() and .remove() #2494 [jondavidjohn](https://github.com/jondavidjohn)
3.8.20 / 2014-12-01
===================
* fixed; recursive readPref #2490 [kjvalencik](https://github.com/kjvalencik)
* fixed; make sure to copy parameters to update() before modifying #2406 [alabid](https://github.com/alabid)
* fixed; unclear documentation about query callbacks #2319
* fixed; setting a schema-less field to an empty object #2314 [alabid](https://github.com/alabid)
* fixed; registering statics and methods for discriminators #2167 [alabid](https://github.com/alabid)
3.9.5 / 2014-11-10
===================
* added; ability to disable autoIndex on a per-connection basis #1875 [sr527](https://github.com/sr527)
* fixed; `geoNear()` no longer enforces legacy coordinate pairs - supports GeoJSON #1987 [alabid](https://github.com/alabid)
* fixed; browser component works when minified with mangled variable names #2302
* fixed; `doc.errors` now cleared before `validate()` called #2302
* added; `execPopulate()` function to make `doc.populate()` compatible with promises #2317
* fixed; `count()` no longer throws an error when used with `sort()` #2374
* fixed; `save()` no longer recursively calls `save()` on populated fields #2418
3.8.19 / 2014-11-09
===================
* fixed; make sure to not override subdoc _ids on find #2276 [alabid](https://github.com/alabid)
* fixed; exception when comparing two documents when one lacks _id #2333 [slawo](https://github.com/slawo)
* fixed; getters for properties with non-strict schemas #2439 [alabid](https://github.com/alabid)
* fixed; inconsistent URI format in docs #2414 [sr527](https://github.com/sr527)
3.9.4 / 2014-10-25
==================
* fixed; statics no longer can be overwritten #2343 [nkcmr](https://github.com/chetverikov)
* added; ability to set single populated paths to documents #1530
* added; setDefaultsOnInsert and runValidator options for findOneAndUpdate() #860
3.8.18 / 2014-10-22
==================
* fixed; Dont use all toObject options in save #2340 [chetverikov](https://github.com/chetverikov)
3.9.3 / 2014-10-01
=================
* added; support for virtuals that return objects #2294
* added; ability to manually hydrate POJOs into mongoose objects #2292
* added; setDefaultsOnInsert and runValidator options for update() #860
3.8.17 / 2014-09-29
==================
* fixed; use schema options retainKeyOrder in save() #2274
* fixed; fix skip in populate when limit is set #2252
* fixed; fix stack overflow when passing MongooseArray to findAndModify #2214
* fixed; optimize .length usage in populate #2289
3.9.2 / 2014-09-08
==================
* added; test coverage for browser component #2255
* added; in-order execution of validators #2243
* added; custom fields for validators #2132
* removed; exception thrown when find() used with count() #1950
3.8.16 / 2014-09-08
==================
* fixed; properly remove modified array paths if array has been overwritten #1638
* fixed; key check errors #1884
* fixed; make sure populate on an array always returns a Mongoose array #2214
* fixed; SSL connections with node 0.11 #2234
* fixed; return sensible strings for promise errors #2239
3.9.1 / 2014-08-17
==================
* added; alpha version of browser-side schema validation #2254
* added; support passing a function to schemas `required` field #2247
* added; support for setting updatedAt and createdAt timestamps #2227
* added; document.validate() returns a promise #2131
3.8.15 / 2014-08-17
==================
* fixed; Replica set connection string example in docs #2246
* fixed; bubble up parseError event #2229
* fixed; removed buggy populate cache #2176
* fixed; dont $inc versionKey if its being $set #1933
* fixed; cast $or and $and in $pull #1932
* fixed; properly cast to schema in stream() #1862
* fixed; memory leak in nested objects #1565 #2211 [devongovett](https://github.com/devongovett)
3.8.14 / 2014-07-26
==================
* fixed; stringifying MongooseArray shows nested arrays #2002
* fixed; use populated doc schema in toObject and toJSON by default #2035
* fixed; dont crash on arrays containing null #2140
* fixed; model.update w/ upsert has same return values on .exec and promise #2143
* fixed; better handling for populate limit with multiple documents #2151
* fixed; dont prevent users from adding weights to text index #2183
* fixed; helper for aggregation cursor #2187
* updated; node-mongodb-native to 1.4.7
3.8.13 / 2014-07-15
==================
* fixed; memory leak with isNew events #2159
* fixed; docs for overwrite option for update() #2144
* fixed; storeShard() handles dates properly #2127
* fixed; sub-doc changes not getting persisted to db after save #2082
* fixed; populate with _id: 0 actually removes _id instead of setting to undefined #2123
* fixed; save versionKey on findOneAndUpdate w/ upsert #2122
* fixed; fix typo in 2.8 docs #2120 [shakirullahi](https://github.com/shakirullahi)
* fixed; support maxTimeMs #2102 [yuukinajima](https://github.com/yuukinajima)
* fixed; support $currentDate #2019
* fixed; $addToSet handles objects without _ids properly #1973
* fixed; dont crash on invalid nearSphere query #1874
3.8.12 / 2014-05-30
==================
* fixed; single-server reconnect event fires #1672
* fixed; sub-docs not saved when pushed into populated array #1794
* fixed; .set() sometimes converts embedded docs to pojos #1954 [archangel-irk](https://github.com/archangel-irk)
* fixed; sub-doc changes not getting persisted to db after save #2082
* fixed; custom getter might cause mongoose to mistakenly think a path is dirty #2100 [pgherveou](https://github.com/pgherveou)
* fixed; chainable helper for allowDiskUse option in aggregation #2114
3.9.0 (unstable) / 2014-05-22
==================
* changed; added `domain` to reserved keywords #1338 #2052 [antoinepairet](https://github.com/antoinepairet)
* added; asynchronous post hooks #1977 #2081 [chopachom](https://github.com/chopachom) [JasonGhent](https://github.com/JasonGhent)
* added; using model for population, cross-db populate [mihai-chiorean](https://github.com/mihai-chiorean)
* added; can define a type for schema validators
* added; `doc.remove()` returns a promise #1619 [refack](https://github.com/refack)
* added; internal promises for hooks, pre-save hooks run in parallel #1732 [refack](https://github.com/refack)
* fixed; geoSearch hanging when no results returned #1846 [ghartnett](https://github.com/ghartnett)
* fixed; do not set .type property on ValidationError, use .kind instead #1323
3.8.11 / 2014-05-22
==================
* updated; node-mongodb-native to 1.4.5
* reverted; #2052, fixes #2097
3.8.10 / 2014-05-20
==================
* updated; node-mongodb-native to 1.4.4
* fixed; _.isEqual false negatives bug in js-bson #2070
* fixed; missing check for schema.options #2014
* fixed; missing support for $position #2024
* fixed; options object corruption #2049
* fixed; improvements to virtuals docs #2055
* fixed; added `domain` to reserved keywords #2052 #1338
3.8.9 / 2014-05-08
==================
* updated; mquery to 0.7.0
* updated; node-mongodb-native to 1.4.3
* fixed; $near failing against MongoDB 2.6
* fixed; relying on .options() to determine if collection exists
* fixed; $out aggregate helper
* fixed; all test failures against MongoDB 2.6.1, with caveat #2065
3.8.8 / 2014-02-22
==================
* fixed; saving Buffers #1914
* updated; expose connection states for user-land #1926 [yorkie](https://github.com/yorkie)
* updated; mquery to 0.5.3
* updated; added get / set to reserved path list #1903 [tstrimple](https://github.com/tstrimple)
* docs; README code highlighting, syntax fixes #1930 [IonicaBizau](https://github.com/IonicaBizau)
* docs; fixes link in the doc at #1925 [kapeels](https://github.com/kapeels)
* docs; add a missed word 'hook' for the description of the post-hook api #1924 [ipoval](https://github.com/ipoval)
3.8.7 / 2014-02-09
==================
* fixed; sending safe/read options in Query#exec #1895
* fixed; findOneAnd..() with sort #1887
3.8.6 / 2014-01-30
==================
* fixed; setting readPreferences #1895
3.8.5 / 2014-01-23
==================
* fixed; ssl setting when using URI #1882
* fixed; findByIdAndUpdate now respects the overwrite option #1809 [owenallenaz](https://github.com/owenallenaz)
3.8.4 / 2014-01-07
==================
* updated; mongodb driver to 1.3.23
* updated; mquery to 0.4.1
* updated; mpromise to 0.4.3
* fixed; discriminators now work when selecting fields #1820 [daemon1981](https://github.com/daemon1981)
* fixed; geoSearch with no results timeout #1846 [ghartnett](https://github.com/ghartnett)
* fixed; infitite recursion in ValidationError #1834 [chetverikov](https://github.com/chetverikov)
3.8.3 / 2013-12-17
==================
* fixed; setting empty array with model.update #1838
* docs; fix url
3.8.2 / 2013-12-14
==================
* fixed; enum validation of multiple values #1778 [heroicyang](https://github.com/heroicyang)
* fixed; global var leak #1803
* fixed; post remove now fires on subdocs #1810
* fixed; no longer set default empty array for geospatial-indexed fields #1668 [shirish87](https://github.com/shirish87)
* fixed; model.stream() not hydrating discriminators correctly #1792 [j](https://github.com/j)
* docs: Stablility -> Stability [nikmartin](https://github.com/nikmartin)
* tests; improve shard error handling
3.8.1 / 2013-11-19
==================
* fixed; mishandling of Dates with minimize/getters #1764
* fixed; Normalize bugs.email, so `npm` will shut up #1769 [refack](https://github.com/refack)
* docs; Improve the grammar where "lets us" was used #1777 [alexyoung](https://github.com/alexyoung)
* docs; Fix some grammatical issues in the documentation #1777 [alexyoung](https://github.com/alexyoung)
* docs; fix Query api exposure
* docs; fix return description
* docs; Added Notes on findAndUpdate() #1750 [sstadelman](https://github.com/sstadelman)
* docs; Update version number in README #1762 [Fodi69](https://github.com/Fodi69)
3.8.0 / 2013-10-31
==================
* updated; warn when using an unstable version
* updated; error message returned in doc.save() #1595
* updated; mongodb driver to 1.3.19 (fix error swallowing behavior)
* updated; mquery to 0.3.2
* updated; mocha to 1.12.0
* updated; mpromise 0.3.0
* updated; sliced 0.0.5
* removed; mongoose.Error.DocumentError (never used)
* removed; namedscope (undocumented and broken) #679 #642 #455 #379
* changed; no longer offically supporting node 0.6.x
* changed; query.within getter is now a method -> query.within()
* changed; query.intersects getter is now a method -> query.intersects()
* added; custom error msgs for built-in validators #747
* added; discriminator support #1647 #1003 [j](https://github.com/j)
* added; support disabled collection name pluralization #1350 #1707 [refack](https://github.com/refack)
* added; support for GeoJSON to Query#near [ebensing](https://github.com/ebensing)
* added; stand-alone base query support - query.toConstructor() [ebensing](https://github.com/ebensing)
* added; promise support to geoSearch #1614 [ebensing](https://github.com/ebensing)
* added; promise support for geoNear #1614 [ebensing](https://github.com/ebensing)
* added; connection.useDb() #1124 [ebensing](https://github.com/ebensing)
* added; promise support to model.mapReduce()
* added; promise support to model.ensureIndexes()
* added; promise support to model.populate()
* added; benchmarks [ebensing](https://github.com/ebensing)
* added; publicly exposed connection states #1585
* added; $geoWithin support #1529 $1455 [ebensing](https://github.com/ebensing)
* added; query method chain validation
* added; model.update `overwrite` option
* added; model.geoNear() support #1563 [ebensing](https://github.com/ebensing)
* added; model.geoSearch() support #1560 [ebensing](https://github.com/ebensing)
* added; MongooseBuffer#subtype()
* added; model.create() now returns a promise #1340
* added; support for `awaitdata` query option
* added; pass the doc to doc.remove() callback #1419 [JoeWagner](https://github.com/JoeWagner)
* added; aggregation query builder #1404 [njoyard](https://github.com/njoyard)
* fixed; document.toObject when using `minimize` and `getters` options #1607 [JedWatson](https://github.com/JedWatson)
* fixed; Mixed types can now be required #1722 [Reggino](https://github.com/Reggino)
* fixed; do not pluralize model names not ending with letters #1703 [refack](https://github.com/refack)
* fixed; repopulating modified populated paths #1697
* fixed; doc.equals() when _id option is set to false #1687
* fixed; strict mode warnings #1686
* fixed; $near GeoJSON casting #1683
* fixed; nearSphere GeoJSON query builder
* fixed; population field selection w/ strings #1669
* fixed; setters not firing on null values #1445 [ebensing](https://github.com/ebensing)
* fixed; handle another versioning edge case #1520
* fixed; excluding subdocument fields #1280 [ebensing](https://github.com/ebensing)
* fixed; allow array properties to be set to null with findOneAndUpdate [aheuermann](https://github.com/aheuermann)
* fixed; subdocuments now use own toJSON opts #1376 [ebensing](https://github.com/ebensing)
* fixed; model#geoNear fulfills promise when results empty #1658 [ebensin