mcollina / mqemitter-mongodb

MongoDB based MQEmitter
MIT License
18 stars 10 forks source link

Bump mongodb from 3.7.3 to 4.3.0 #46

Closed dependabot[bot] closed 2 years ago

dependabot[bot] commented 2 years ago

Bumps mongodb from 3.7.3 to 4.3.0.

Release notes

Sourced from mongodb's releases.

v4.3.0

The MongoDB Node.js team is pleased to announce version 4.3.0 of the mongodb package!

Release Highlights

This release includes SOCKS5 support and a couple of other important features and bug fixes that we hope will improve your experience with the node driver.

The SOCKS5 options can be configured via the proxyHost, proxyPort, proxyPassword and proxyUsername options in the connection string passed to the MongoClient instance. Big thanks to @​addaleax for helping with this feature!

The other notable features address performance and TypeScript as detailed below.

Performance

The original release of the 4.x driver relied on a new version of the BSON library that enables UTF-8 validation by default, resulting in noticeable performance degradation over the 3.x driver when processing over string data. This release introduces an option to opt out of this validation by specifying enableUtf8Validation: false at the client, database, collection, or individual operation level.

For example:

// disable UTF-8 validation globally on the MongoDB client
const client = new MongoClient('mongodb://localhost:27017', { enableUtf8Validation: false });

// disable UTF-8 validation for a particular operation const client = new MongoClient('mongodb://localhost:27017'); const db = client.db('database name'); const collection = db.collection('collection name');

await collection.find({ name: 'John Doe'}, { enableUtf8Validation: false });

TypeScript

Type inference for nested documents

Thanks to an amazing contribution from @​avaly we now have support for key auto-completion and type hinting on nested documents! MongoDB permits using dotted keys to reference nested keys or specific array indexes within your documents as a shorthand for getting at keys beneath the top layer. Typescript's Template Literal types allow us to take the interface defined on a collection and calculate at compile time the nested keys and indexes available.

For example:

interface Human {
  name: string;
  age: number;
}

interface Pet { name: string bestFriend: Human }

const pets = client.db().collection<Pet>('pets'); await pets.findOne({ 'bestFriend.age': 'young!' }) // typescript error!

... (truncated)

Changelog

Sourced from mongodb's changelog.

Changes in 4.x (and how to migrate!)

Hello dear reader, thank you for adopting version 4.x of the MongoDB Node.js driver, from the bottom of our developer hearts we thank you so much for taking the time to upgrade to our latest and greatest offering of a stunning database experience. We hope you enjoy your upgrade experience and this guide gives you all the answers you are searching for. If anything, and we mean anything, hinders your upgrade experience please let us know via JIRA. We know breaking changes are hard but they are sometimes for the best. Anyway, enjoy the guide, see you at the end!

Key Changes

Typescript

We've migrated the driver to Typescript! Users can now harness the power of type hinting and intellisense in editors that support it to develop their MongoDB applications. Even pure JavaScript projects can benefit from the type definitions with the right linting setup. Along with the type hinting there's consistent and helpful docs formatting that editors should be able to display while developing. Recently we migrated our BSON library to TypeScript as well, this version of the driver pulls in that change.

Community Types users (@​types/mongodb)

If you are a user of the community types (@​types/mongodb) there will likely be compilation errors while adopting the types from our codebase. Unfortunately we could not achieve a one to one match in types due to the details of writing the codebase in Typescript vs definitions for the user layer API along with the breaking changes of this major version. Please let us know if there's anything that is a blocker to upgrading on JIRA.

Node.js Version

We now require node 12.9 or greater for version 4 of the driver. If that's outside your support matrix at this time, that's okay! Bug fix support for our 3.x branch will not be ending until summer 2022, which has support going back as far as Node.js v4!

CRUD results

Our CRUD operations now return the drivers-wide spec-compliant results which are defined here:

For example, insertOne() used to return an object that was shaped like:

interface LegacyInsertOneResult {
    insertedCount: number;
    ops: InsertedDocument[];
    insertedId: ObjectId;
    connection: Connection;
    result: { ok: number; n: number };
}

and now returns:

</tr></table> 

... (truncated)

Commits
  • e58fbf2 chore(release): 4.3.0
  • 00be68f refactor(NODE-3717): Test reorg part 7 (#3093)
  • d5ff074 chore(gridfs): improve error message when overrunning file length (#3094)
  • b701d5d refactor(NODE-3717): test reorganization part 6 (#3090)
  • 7bb9e37 fix(gridfs): make GridFSBucketWriteStream.prototype.end() return this for...
  • 54f2352 refactor(NODE-3717): reorganize tests pt5
  • 451627a feat(NODE-3633): add Socks5 support (#3041)
  • 76fff97 feat(NODE-3589): support dot-notation attributes in Filter (#2972)
  • 91a67e0 feat(NODE-3793): Remove offensive language from code and tests (#3082)
  • 8a3bab7 test(NODE-3713): skip/fix failing evergreen tests (#3069)
  • Additional commits viewable in compare view


Dependabot compatibility score

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)
dependabot[bot] commented 2 years ago

Superseded by #47.