The MongoDB Node.js team is pleased to announce version 6.5.0 of the mongodb package!
Release Notes
Bulk Write Operations Generate Ids using pkFactory
When performing inserts, the driver automatically generates _ids for each document if there is no _id present. By default, the driver generates ObjectIds. An option, pkFactory, can be used to configure the driver to generate _ids that are not object ids.
For a long time, only Collection.insert and Collection.insertMany actually used the pkFactory, if configured. Notably, Collection.bulkWrite(), Collection.initializeOrderedBulkOp() and Collection.initializeOrderedBulkOp()always generated ObjectIds, regardless of what was configured on collection.
The driver always generates _ids for inserted documents using the pkFactory.
[!CAUTION]
If you are using a pkFactory and performing bulk writes, you may have inserted data into your database that does not have _ids generated by the pkFactory.
Fixed applying read preference to commands depending on topology
When connecting to a secondary in a replica set with a direct connection, if a read operation is performed, the driver attaches a read preference of primaryPreferred to the command.
Fixed memory leak in Connection layer
The Connection class has recently been refactored to operate on our socket operations using promises. An oversight how we made async network operations interruptible made new promises for every operation. We've simplified the approach and corrected the leak.
Query SRV and TXT records in parallel
When connecting using a convenient SRV connection string (mongodb+srv://) hostnames are obtained from an SRV dns lookup and some configuration options are obtained from a TXT dns query. Those DNS operations are now performed in parallel to reduce first-time connection latency.
Container and Kubernetes Awareness
The Node.js driver now keeps track of container metadata in the client.env.container field of the handshake document.
If space allows, the following metadata will be included in client.env.container:
env?: {
container?: {
orchestrator?: 'kubernetes' // if process.env.KUBERNETES_SERVICE_HOST is set
runtime?: 'docker' // if the '/.dockerenv' file exists
}
}
Note: If neither Kubernetes nor Docker is present, client.env will not have the container property.
Add property errorResponse to MongoServerError
The MongoServer error maps keys from the error document returned by the server on to itself. There are some use cases where the original error document is desirable to obtain in isolation. So now, the mongoServerError.errorResponse property stores a reference to the error document returned by the server.
This version was pushed to npm by dbx-node, 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 show ignore conditions` will show all of the ignore conditions of the specified dependency
- `@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.13.0 to 6.5.0.
Release notes
Sourced from mongodb's releases.
... (truncated)
Changelog
Sourced from mongodb's changelog.
... (truncated)
Commits
c9e32ad
chore(main): release 6.5.0 [skip-ci] (#4013)f6cd8d9
feat(NODE-6008): deprecate CloseOptions interface (#4030)36fa752
refactor(NODE-5915): topology close logic to be synchronous (#4021)937c9c8
fix(NODE-5981): read preference not applied to commands properly (#4010)31f1eed
test(NODE-5969): convert CSFLE corpus test #6 to TS, async/await and add writ...fbb5059
fix(NODE-5636): generate _ids using pkFactory in bulk write operations (#4025)2348548
test(DRIVERS-2812): sdam load balancer tests in serverless (#4026)c023242
feat(NODE-5988): Provide access to raw results doc on MongoServerError (#4016)69de253
fix(NODE-5993): memory leak in theConnection
class (#4022)28b7040
feat(NODE-5968): container and Kubernetes awareness in client metadata (#4005)Maintainer changes
This version was pushed to npm by dbx-node, 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 show