The MongoDB Node.js team is pleased to announce version 4.12.0 of the mongodb package!
Release Highlights
ChangeStreams are now AsyncIterators
ChangeStreams are now async iterables and can be used anywhere that expects an async iterable. Notably, change streams can now be used in Javascript for-await loops:
const changeStream = collection.watch();
for await (const change of changeStream) {
console.log(“Received change: “, change);
}
Some users may have been using change streams in for-await loops manually by using a for-await loop with the ChangeStream’s internal cursor. For example:
const changeStream = collection.watch();
for await (const change of changeStream.cursor) {
console.log(“Received change: “, change);
}
The change stream cursor has no support for resumabilty and consequently the change stream will never attempt to resume on any errors. We strongly caution against using a change stream cursor as an async iterable and strongly recommend using the change stream directly.
Server Monitoring Fix When Monitoring Events are Skipped
Version 4.7.0 of the Node driver released an improvement to our server monitoring in FAAS environments by allowing the driver to skip monitoring events if there were more than one monitoring events in the queue when the monitoring code restarted. When skipping monitoring events that contained a topology change, the driver would incorrectly fail to update its view of the topology.
Version 4.12.0 fixes this issue by ensuring that the topology is always updated when monitoring events are processed.
Performance Improvements with Buffering
This release also modifies the data structures used internally in the driver to use linked lists in places where random access is not required and constant time insertion and deletion is beneficial.
External Contributions
Many thanks to @ImRodry for helping us fix the documentation for our deprecated callback overloads in this release!
Features
NODE-4683: make ChangeStream an async iterable (#3454) (df8d9a4)
Deprecations
NODE-4681: deprecate modify result (#3459) (6a8776c)
NODE-4733: deprecate result and getLastOp (#3458) (a143d3b)
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 4.6.0 to 4.12.0.
Release notes
Sourced from mongodb's releases.
... (truncated)
Changelog
Sourced from mongodb's changelog.
... (truncated)
Commits
8254575
chore(release): 4.12.0bcc33c8
docs: generate docs from latest main (#3469)4c9b4d8
fix(NODE-4783): handle orphaned operation descriptions (#3463)04203c7
docs(NODE-4755): clarify deprecation docs for autoIndexId (#3470)1a5e619
feat(NODE-4757): deprecate unused PipeOptions (#3466)9958879
docs: generate docs from latest main (#3462)8320315
docs(NODE-4823): fix broken links in 4.11 documentation (#3467)199dcaf
fix(NODE-4753): remove erroneous deprecation of geoNear (#3465)1eea4f0
feat(NODE-4809): deprecate the existing logger (#3464)b70cc7c
types: move deprecated overloads to the bottom (#3461)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)