Skip to content

Bump mongodb from 3.2.7 to 4.0.0 #130

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed

Conversation

dependabot-preview[bot]
Copy link
Contributor

Bumps mongodb from 3.2.7 to 4.0.0.

Release notes

Sourced from mongodb's releases.

v4.0.0

The MongoDB Node.js team is delighted to announce the major version release 4.0.0 of the MongoDB Node.js Driver!

Release Highlights

We finally did it! The major version release of the MongoDB driver is now generally available! This release represents over a year's worth of effort that couldn't have been done without stellar contributions from the community and our Node.js DBX team. We hope you give it a try and are able to upgrade smoothly! 🎉

The biggest news is our migration to Typescript 🥳 offering first class support of type definitions in the driver itself.

Some cool new MongoDB 5.0 features now supported in the driver are:

  • Native support for Time Series Collections
    • Time series collections efficiently store sequences of measurements over a period of time. Compared to normal collections, storing time series data in time series collections improves query efficiency and reduces the disk usage for time series data and secondary indexes
  • Snapshot reads on secondaries
    • Support for read concern level "snapshot" (non-speculative) for read commands outside of transactions, including on secondaries. The snapshot reads on secondaries feature allows users to perform analytics with snapshot isolation on dedicated secondaries, including long running snapshot reads.

Below are only the changes since our last beta release, for the full set of breaking changes look at the upgrade guide here and for the full set of new features, take a look here.

⚠ BREAKING CHANGES (since beta.6)

  • NODE-3427: remove md5 hashing from GridFS API (#2899) (a488d88)
  • NODE-1797: error when ChangeStream used as iterator and emitter concurrently (#2871) (e0b3afe)
  • AND MORE!

Features (since beta.6)

Bug Fixes

  • NODE-1797: error when ChangeStream used as iterator and emitter concurrently (#2871) (e0b3afe)
  • NODE-1843: bulk operations ignoring provided sessions (#2868) (70810d1)
  • NODE-3063: fix custom csfle test script (#2884) (d73c80c)
  • NODE-3279: use "hello" for monitoring if supported (#2895) (5a8842a)
  • NODE-3386: listCollections result type definition (#2866) (c12979a)
  • NODE-3413: accept tls=false in mongodb+srv connection strings (#2886) (526c73f)
  • NODE-3416: make change stream generic default to Document (#2882) (3d490dc)
  • NODE-3430: watch method types on MongoClient and Db (#2900) (17cc291)

Documentation

We invite you to try the mongodb library immediately, and report any issues to the NODE project.

... (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!

Cursor changes

Affected classes:

  • AbstractCursor
  • FindCursor
  • AggregationCursor
  • ChangeStreamCursor
    • This is the underlying cursor for ChangeStream
  • ListCollectionsCursor

Our Cursor implementation has been updated to clarify what is possible before and after execution of an operation. Take this example:

const cursor = collection.find({ a: 2.3 }).skip(1);
for await (const doc of cursor) {
  console.log(doc);
  fc.limit(1); // bad.
}

... (truncated)

Commits
  • ead7920 chore(release): 4.0.0
  • 17cc291 fix(NODE-3430): watch method types on MongoClient and Db (#2900)
  • a3aa060 docs(NODE-2329): write upgrade and migration guide (#2890)
  • 523e05c feat(NODE-3392): enable snapshot reads on secondaries (#2897)
  • 5a8842a fix(NODE-3279): use "hello" for monitoring if supported (#2895)
  • a488d88 refactor!(NODE-3427): remove md5 hashing from GridFS API (#2899)
  • cb0db49 feat(NODE-3403): define MongoRuntimeError children (#2894)
  • c12979a fix(NODE-3386): listCollections result type definition (#2866)
  • e0b3afe fix(NODE-1797): error when ChangeStream used as iterator and emitter concurre...
  • 70810d1 fix(NODE-1843): bulk operations ignoring provided sessions (#2868)
  • Additional commits viewable in compare view
Maintainer changes

This version was pushed to npm by nbbeeken, a new releaser for mongodb since your current version.


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 use these labels will set the current labels as the default for future PRs for this repo and language
  • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
  • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
  • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
  • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

Additionally, you can set the following in your Dependabot dashboard:

  • Update frequency (including time of day and day of week)
  • Pull request limits (per update run and/or open at any time)
  • Out-of-range updates (receive only lockfile updates, if desired)
  • Security updates (receive only security updates, if desired)

@dependabot-preview dependabot-preview bot added the dependencies Pull requests that update a dependency file label Jul 16, 2021
@pull-request-quantifier-deprecated

This PR has 2 quantified lines of changes. In general, a change size of upto 200 lines is ideal for the best PR experience!


Quantification details

Label      : Extra Small
Size       : +1 -1
Percentile : 0.8%

Total files changed: 2

Change summary by file extension:
.json : +1 -1

Change counts above are quantified counts, based on the PullRequestQuantifier customizations.

Why proper sizing of changes matters

Optimal pull request sizes drive a better predictable PR flow as they strike a
balance between between PR complexity and PR review overhead. PRs within the
optimal size (typical small, or medium sized PRs) mean:

  • Fast and predictable releases to production:
    • Optimal size changes are more likely to be reviewed faster with fewer
      iterations.
    • Similarity in low PR complexity drives similar review times.
  • Review quality is likely higher as complexity is lower:
    • Bugs are more likely to be detected.
    • Code inconsistencies are more likely to be detetcted.
  • Knowledge sharing is improved within the participants:
    • Small portions can be assimilated better.
  • Better engineering practices are exercised:
    • Solving big problems by dividing them in well contained, smaller problems.
    • Exercising separation of concerns within the code changes.

What can I do to optimize my changes

  • Use the PullRequestQuantifier to quantify your PR accurately
    • Create a context profile for your repo using the context generator
    • Exclude files that are not necessary to be reviewed or do not increase the review complexity. Example: Autogenerated code, docs, project IDE setting files, binaries, etc. Check out the Excluded section from your prquantifier.yaml context profile.
    • Understand your typical change complexity, drive towards the desired complexity by adjusting the label mapping in your prquantifier.yaml context profile.
    • Only use the labels that matter to you, see context specification to customize your prquantifier.yaml context profile.
  • Change your engineering behaviors
    • For PRs that fall outside of the desired spectrum, review the details and check if:
      • Your PR could be split in smaller, self-contained PRs instead
      • Your PR only solves one particular issue. (For example, don't refactor and code new features in the same PR).

How to interpret the change counts in git diff output

  • One line was added: +1 -0
  • One line was deleted: +0 -1
  • One line was modified: +1 -1 (git diff doesn't know about modified, it will
    interpret that line like one addition plus one deletion)
  • Change percentiles: Change characteristics (addition, deletion, modification)
    of this PR in relation to all other PRs within the repository.


Was this comment helpful? 👍  :ok_hand:  :thumbsdown: (Email)
Customize PullRequestQuantifier for this repository.

@dependabot-preview
Copy link
Contributor Author

Superseded by #131.

@dependabot-preview dependabot-preview bot deleted the dependabot/npm_and_yarn/mongodb-4.0.0 branch July 21, 2021 12:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
dependencies Pull requests that update a dependency file Extra Small
Projects
None yet
Development

Successfully merging this pull request may close these issues.

0 participants