The MongoDB Node.js team is pleased to announce version 4.6.0 of the mongodb package!
Release Highlights
TypeScript: ChangeStreamDocument
Our change stream document type and watch API have undergone some improvements! You can now define your own custom type for the top level document returned in a 'change' event. This is very useful when using a pipeline that significantly changes the shape of the change document (ex. $replaceRoot, $project operators). Additionally, we've improved the type information of the default change stream document to default to union of the possible events from MongoDB. This works well with typescript's ability to narrow a Discriminated Union based on the operationType key in the default change stream document.
Prior to this change the ChangeStreamDocument inaccurately reflected the runtime shape of the change document. Now, using the union, we correctly indicate that some properties do not exist at all on certain events (as opposed to being optional). With this typescript fix we have added the properties to for rename events, as well as lsid, txnNumber, and clusterTime if the change is from within a transaction.
NOTE: Updating to this version may require fixing typescript issues. Those looking to adopt this version but defer any type corrections can use the watch API like so: .watch<any, X>(). Where X controls the type of the change document for your use case.
Performance: Consider Server Load During Server Selection
Operations will now be directed towards servers that have fewer in progress operations, distributing the load more evenly across servers.
Note
This release includes some experimental features that are not yet ready for use. As a reminder, anything marked experimental is not a part of the official driver API and is subject to change without notice.
Features
NODE-2992: consider server load during server selection (#3219) (35eeba3)
NODE-4059: ChangeStreamDocument not fully typed to specification (#3191) (8b24212)
Bug Fixes
NODE-3565: Improve error message for insertMany with partially empty array (#3221) (0ef2516)
NODE-4232: stream() also returns generic AsyncIterable (ed4ba58)
NODE-3688: make handshake errors retryable (#3165) (3f8765a)
NODE-3833: return early on end if gridfs upload stream is already ended (#3223) (c27e844)
NODE-3928: don't throw error in Response constructor (#3199) (441fc63)
NODE-4031: options parsing for array options (#3193) (4b2e3d1)
NODE-4133: array field NestedPaths return type (#3184) (c46c984)
NODE-4156: remove comment from commands pre-4.4 (#3195) (4e6dccd)
NODE-4188: default localThresholdMS to 15ms (#3207) (5e730ff)
This version was pushed to npm by pearsb1, a new releaser for mongodb since your current version.
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Bumps mongodb from 3.7.3 to 4.6.0.
Release notes
Sourced from mongodb's releases.
... (truncated)
Changelog
Sourced from mongodb's changelog.
... (truncated)
Commits
273d8e7
chore(release): 4.6.015f8870
test(NODE-4165): sync maxConnecting spec tests and update runner (#3239)c6a2ddd
chore(NODE-4162): removed TODO (#3242)c12fef3
fix flakey operation count test (#3240)ed4ba58
fix(NODE-4232): stream() also returns generic AsyncIterable8c16374
chore: use latest version of mongodb-client-encryption (#3238)0ef2516
fix(NODE-3565): Improve error message for insertMany with partially empty arr...79a917b
feat(NODE-4189): Add support for clustered collections (#3229)d216725
feat(NODE-4185): Allow opting out of disk use on cursor builder (#3230)3269a6e
chore(release): 4.6.0-alpha.0Maintainer changes
This version was pushed to npm by pearsb1, a new releaser for mongodb since your current version.
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)