node-mongodb-native

The official MongoDB Node.js driver

APACHE-2.0 License

Downloads
25.2M
Stars
10K
Committers
461

Bot releases are hidden (Show)

node-mongodb-native - v3.6.12

Published by nbbeeken about 3 years ago

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

Bug Fixes

  • NODE-3487: check for nullish aws mechanism property (#2957) (5902b4c)
  • NODE-3528: add support for snappy v7 (#2947) (54f5c2d)

Documentation

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

node-mongodb-native - v4.1.1

Published by nbbeeken about 3 years ago

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

Release Highlights

Error handling

We introduced better organization and consistency to our existing errors in an effort to provide more detailed error types that can help identify issues clearly and quickly. Our readme has a new section that describes how to handle errors thrown by the driver and defines our approach to semver in the context of errors. Notably, we recommend only using instanceof checks to filter for a given error class as we do not guarantee error messages or names will be preserved between patch releases, only the subclass hierarchy.

Thanks so much to our summer interns @andymina and @W-A-James for undertaking this effort!

Notable fixes

  • This version of the driver brings in the latest BSON release which includes deserialization performance improvements.
  • The snappy package recently released a major version bump (v7) that makes use of a rust implementation of Snappy compression. Our driver can now make use of this version (while maintaining compatibility with the previous v6).
  • findOne() once again correctly returns null when no match is found instead of undefined. This change was unintentional and not consistent with our other APIs. It slipped through testing due to the nature of undefined and null being nearly (==) but not actually (===) equal. We apologize if this results in the need for any code changes.

This release also addresses some Typescript issues that require further explanation, let's dive in:

TypeScript support

Projections

Starting in MongoDB 4.4 projections can accept aggregation expressions and aggregation syntax.
This empowers users to create some pretty amazing and complex data model transformations on the database side.
Unfortunately, our initial release of typescript typing for projections was too narrow to allow these use cases and still pass the compiler checks.
Now projections are generic objects and the result of a cursor with a projection is typed as a generic object by default.

The recommended usage for projections alongside typescript is as follows:

interface Pet {
    name: string;
    buddies: Pet[];
}
interface PetBuddyCount {
    name: string;
    buddyCount: number;
}

const pets = db.collection<Pet>('pets');

const petBuddyCounts = await pets.find().project<PetBuddyCount>({
    name: 1,
    buddyCount: { $size: '$buddies' },
}).toArray();

By using a parameterized .project call you can now get the correct type information on the petBuddyCounts array.
You will need to build the projection type yourself based on the projection you define for your query, but this has the benefit of constraining your results to precisely your type expectations.

Generics in find/findOne

In our initial typescript release the find and findOne methods accepted a generic parameter that was passed to the filter argument of the API.

find<T>(f: Filter<T>): FindCursor<T>

Due to how typescript automatically resolves the types of generics, one could run into an issue when specifying a filter that was incorrectly typed.
The code below should be a Typescript error, TS hints to us the name is a string so it should only allow an array of string for $in.

// (using the same pets collection from the last example)
pets.find({ name: { $in: [1, 2] } });
// instead of the expected FindCursor<Pet> type TS was resolving to:
const res: FindCursor<{name: {$in: number[]}}> = pets.find(/* same arg as above */);

It uses the incorrectly typed filter that does not match the schema of Filter<TSchema> to automatically resolve a crazy return type.
The function definition has now been updated to be:

find<T>(f: Filter<TSchema>): FindCursor<T>

So the Filter argument will no longer be automatically resolved to the passed in type, giving us the typescript compiler errors we love so much!

Bug Fixes

  • NODE-3454: projection types are too narrow (#2924) (48d6da9)
  • NODE-3468: remove generic overrides from find (#2935) (74bd7bd)
  • NODE-3511: deprecate fullResponse and remove associated buggy code paths (#2943) (dfc39d1)
  • NODE-3528: add support for snappy 7 (#2939) (0f7f300)
  • NODE-3546: revert findOne not found result type to null (#2945) (1c576e9)

Refactoring

Documentation

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

node-mongodb-native - v3.6.11

Published by nbbeeken about 3 years ago

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

Release Highlights

This patch addresses a few bugs listed below.
Notably, we fixed an issue with the way we imported one of our optional dependencies that blocked webpack bundling.

If you are a webpack user you will still get warnings for our optional dependencies (if you don't use them).
You can hush the warnings by adding this option to your webpack config:

{
    // ...
    externals: [
        'mongodb-client-encryption',
        'aws4',
        'saslprep',
        'kerberos',
        'snappy',
        'bson-ext',
    ],
    // ...
}

It is important to note that this will leave the imports in place and not pull in the code to your bundle. If you later do adopt using these dependencies you'll want to revert the relevant setting.

Bug Fixes

  • NODE-1843: bulk operations ignoring provided sessions (#2898) (9244b17)
  • NODE-3199: unable to bundle driver due to uncaught require (#2903) (60efe9d)

Documentation

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

node-mongodb-native - v4.1.0

Published by nbbeeken about 3 years ago

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

Release Highlights

This release includes load balancer support, intended for use with the beta Serverless platform. When using the driver with Serverless, the SRV URI will automatically put the driver into this mode. When wanting to use a non-SRV URI one must add the loadBalanced=true option to the URI to put the driver into this mode. Being in this mode enables the driver to properly route transactions and cursors to the correct service behind the load balancer.

The release also fixes an important bug where the original release of the v4 driver enabled command monitoring by default, which caused many reported observations of performance degradation when upgrading from v3 of the driver. Command monitoring is now once again disabled by default and must be enabled by passing in { monitorCommands: true } to the client if desired.

Features

  • NODE-2843: implement sessions advanceClusterTime method (#2920) (1fd0244)
  • NODE-3011: Load Balancer Support (#2909) (c554a7a)

Bug Fixes

  • NODE-2883: Aggregate Operation should not require parent parameter (#2918) (dc6e2d6)
  • NODE-3058: accept null or undefined anywhere we permit nullish values (#2921) (b42a1b4)
  • NODE-3441: fix typings for createIndexes (#2915) (f87f376)
  • NODE-3442: AsyncIterator has incorrect return type (#2916) (4a10389)
  • NODE-3452: readonly filters not permitted by typings (#2927) (ce51e78)
  • NODE-3510: omit incorrect | void in declaration of Promise overload of rename() (#2922) (58c1e84)
  • NODE-3513: default command monitoring to off (#2926) (3c60245)

Documentation

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

node-mongodb-native - v4.0.1

Published by dariakp over 3 years ago

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

Release Highlights

This release fixes two small but important bugs from our 4.0.0 release:

  • Webpack will no longer throw an error when trying to bundle the driver
  • Snapshot sessions will now correctly apply the snapshot time when initiated with a distinct operation

We hope this improves your upgrade experience!

Bug Fixes

  • NODE-3199: unable to bundle driver due to uncaught require (#2904) (9e48bbd)
  • NODE-3393: snapshot time not applied if distinct executed first (#2908) (7aa3008)
  • NODE-3417: allow calling db() before MongoClient is connected (#2889) (51ea86d)

Documentation

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

node-mongodb-native - v4.0.0

Published by nbbeeken over 3 years ago

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.

node-mongodb-native - v3.6.10

Published by nbbeeken over 3 years ago

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

Release Highlights

This patch addresses a few bugs listed below. Notably the bsonRegExp option is now respected by the underlying BSON library, you can use this to decode regular expressions that contain syntax not permitted in native JS RegExp objects. Take a look at this example:

await collection.insertOne({ a: new BSONRegExp('(?-i)AA_') })
await collection.findOne({ a: new BSONRegExp('(?-i)AA_') }, { bsonRegExp: true })
// { _id: ObjectId,  a: BSONRegExp { pattern: '(?-i)AA_', options: '' } }

Also there was an issue with Cursor.forEach where user defined forEach callbacks that throw errors incorrectly handled catching errors. Take a look at the comments in this example:

collection.find({}).forEach(doc => {
    if(doc.bad) throw new Error('bad document!');
}).catch(error => {
    // now this is called! and error is `bad document!`
})
// before this fix the `bad document!` error would be thrown synchronously
// and have to be caught with try catch out here

Bug Fixes

  • NODE-2035: Exceptions thrown from awaited cursor forEach do not propagate (#2852) (a917dfa)
  • NODE-3150: added bsonRegExp option for v3.6 (#2843) (e4a9a57)
  • NODE-3358: Command monitoring objects hold internal state references (#2858) (750760c)
  • NODE-3380: perform retryable write checks against server (#2861) (621677a)
  • NODE-3397: report more helpful error with unsupported authMechanism in initial handshake (#2876) (3ce148d)

Documentation

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

node-mongodb-native - v4.0.0-beta.6

Published by nbbeeken over 3 years ago

The MongoDB Node.js team is pleased to announce version 4.0.0-beta.6 of the mongodb package!

Release Highlights

This is on the larger side of the beta releases we've done so far we're getting closer to calling this version official.

As a breaking change in this release we now make use of the new MongoDriverError and MongoServerError to clarify where the issue arose from. All of the errors that our driver throws subclass from MongoError so its possible to filter in catch blocks using instanceof. Take a look at this example:

// without calling .connect()
await c.insertOne({ a: 1 })
// Uncaught MongoDriverError: MongoClient must be connected before calling MongoClient.prototype.db
//   at MongoClient.db (lib/mongo_client.js)
await c.insertOne({ _id: /a/ })
// Uncaught MongoServerError: can't use a regex for _id
//   at lib/operations/insert.js {
//     index: 0,
//     code: 2
//   }

Here's the highlights:

  • BSON-EXT support is back! Make sure you use bson-ext v4 with the driver v4.
  • Our typescript got some big upgrades, you should get hinting and completion for filters in .find() and update specifiers in findOneAndUpdate()
  • If you store regular expressions in mongodb from another language where the symbols are not supported in native JS regexes, you can now set the bsonRegExp flag to retrieve them
   await collection.insertOne({ a: new BSONRegExp('(?-i)AA_') })
   await collection.findOne({ a: new BSONRegExp('(?-i)AA_') }, { bsonRegExp: true })
   // { _id: ObjectId,  a: BSONRegExp { pattern: '(?-i)AA_', options: '' } }

⚠ BREAKING CHANGES

  • NODE-3291: Standardize error representation in the driver (#2824)
  • NODE-3272: emit correct event type when SRV Polling (#2825)
  • NODE-2752: remove strict/callback mode from Db.collection helper (#2817)

Features

  • NODE-2751: add arrayFilters builder to bulk FindOperators (#2820) (d099622)
  • NODE-3274: add type hinting for UpdateFilter (#2842) (05035eb)
  • NODE-3325: support 'let' option for aggregate command (#2828) (e38838e)
  • NODE-3331: offer downleveled types for legacy typescript versions (#2859) (27cf1d2)
  • NODE-3333: support 'let' option for CRUD commands (#2829) (0d91da1)

Bug Fixes

  • NODE-1502: command monitoring objects hold internal state references (#2832) (a2887db)
  • NODE-2026: SERVICE_REALM kerberos mechanism property not attached (#2865) (5caa354)
  • NODE-2035: exceptions thrown from awaited cursor forEach do not propagate (#2835) (ac49df6)
  • NODE-2905: support SERVICE_NAME authentication mechanism property (#2857) (dfb91b8)
  • NODE-2944: Reintroduce bson-ext support (#2823) (8eb0081)
  • NODE-3150: allow retrieving PCRE-style RegExp (ca9e2dc)
  • NODE-3272: emit correct event type when SRV Polling (#2825) (579119f)
  • NODE-3305: beforeHandshake flag is always true (#2854) (079bd6c)
  • NODE-3311: InsertOneOptions extends CommandOperationOptions (#2816) (734b481)
  • NODE-3335: do not validate explain verbosity in client (#2834) (1a57ba8)
  • NODE-3343: allow overriding result document after projection applied (#2856) (988f9c8)
  • NODE-3356: update redaction logic for command monitoring events (#2849) (536e5ff)
  • NODE-3291: Standardize error representation in the driver (#2824) (9608c6a)
  • NODE-2752: remove strict/callback mode from Db.collection helper (#2817) (53abfe7)

Documentation

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

node-mongodb-native - v4.0.0-beta.5

Published by dariakp over 3 years ago

The MongoDB Node.js team is pleased to announce version 4.0.0-beta.5 of the driver!

Release Highlights

This release further improves our TypeScript support with consistent enum naming and a better list of exported types.

Bug Fixes

  • NODE-3183, NODE-3249: bring versioned API impl up to date (#2814) (cd3b73a)
  • NODE-3245: mark symbols as internal remove from type definitions (#2810) (0b636ba)
  • NODE-3275: Fix enum type export naming and serverApi validation (#2809) (661511d)

Documentation

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

node-mongodb-native - v3.6.9

Published by dariakp over 3 years ago

The MongoDB Node.js team is pleased to announce version 3.6.9 of the driver!

Release Highlights

This release fixes a major performance bug in bulk write operations, which was inadvertently introduced by an incomplete code change in the previous release. The bug resulted in redundant array iterations and caused exponential increases in bulk operation completion times. Thank you Jan Schwalbe for bringing this to our attention!

Bug Fixes

  • NODE-3309: remove redundant iteration of bulk write result (#2815) (fac9610)
  • NODE-3234: fix url parsing for a mongodb+srv url that has commas in the database name (#2789) (58c4e69)

Documentation

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

node-mongodb-native - v3.6.8

Published by nbbeeken over 3 years ago

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

Release Highlights

Thanks to the quick adoption of the previous new patch by the mongoose package (https://github.com/Automattic/mongoose/pull/10265) a small bug was identified when connections to mongodb would timeout causing unnecessary clean up operations to run. Thank you @vkarpov15!

Bug Fixes

  • NODE-3305: undo flipping of beforeHandshake flag for timeout errors (#2813) (6e3bab3)

Documentation

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

node-mongodb-native - v3.6.7

Published by nbbeeken over 3 years ago

The MongoDB Node.js team is pleased to announce version 3.6.7 of the driver

Release Highlights

This patch addresses a number of bug fixes. Notably, there was an interesting javascript related issue with sorting documents. It only impacts users using numerical keys in their documents.

> { a: 'asc', [23]: 'asc' }
{ [23]: 'asc', a: 'asc' } // numbers come first

In javascript, numerical keys are always iterated first when looping over the keys of an object followed by the chronological specification of each string key. This effectively changes the ordering of a sort document sent to mongodb. However our driver does accept sort specification in a variety of ways and one way to avoid this problem is passing an array of tuples:

[['a', 'asc'], ['23', 'asc']]

This ensures that mongodb is sent the 'a' key as the first sort key and '23' as the second.

Bug Fixes

  • NODE-3159: removing incorrect apm docs (#2793) (971259a)
  • NODE-3173: Preserve sort key order for numeric string keys (#2790) (730f43a)
  • NODE-3176: handle errors from MessageStream (#2774) (f1afcc4)
  • NODE-3192: check clusterTime is defined before access (#2806) (6ceace6)
  • NODE-3252: state transistion from DISCONNECTED (#2807) (5d8f649)
  • NODE-3219: topology no longer causes close event (#2791) (16e7064)
  • invalid case on writeconcern makes skip check fail (#2773) (b1363c2)

Documentation

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

Thanks very much to all the community members who contributed to this release!

node-mongodb-native - v4.0.0-beta.4

Published by nbbeeken over 3 years ago

The MongoDB Node.js team is pleased to announce version 4.0.0.beta.4 of the driver.

Release Highlights

This beta release brings optional support for Typescript generics when defining your collections

// Example:
interface Pet {
    type: 'cat' | 'dog' | 'fish'
}
const collection = db.collection<Pet>()
await collection.findOne({}).toArray() // returns Pet[]

as well as strong typing for events emitted by the MongoClient. For example, when listening to .on('commandStarted' event => ...), event here will be a CommandStartedEvent object.

We have a few breaking changes listed below, notably the node driver now aligns with other drivers by using the returnDocument option when determining whether to return the document before or after the update in findOneAndUpdate and findOneAndReplace.

⚠ BREAKING CHANGES

  • NODE-1812: replace returnOriginal with returnDocument option (#2803)
  • NODE-3157: update find and modify interfaces for 4.0 (#2799)
  • NODE-2978: remove deprecated bulk ops (#2794)

Features

Bug Fixes

  • NODE-2995: Add shared metadata MongoClient (#2772) (9073d54)

  • NODE-3074: update estimated document count for v1 api (#2764) (146791c)

  • NODE-3109: prevent servername from being an IP (#2771) (27089be)

  • NODE-3166: allowInvalidHostnames and allowInvalidCertificates flags are ignored (#2784) (a769cf8)

  • NODE-3174: Preserve sort key order for numeric string keys (#2788) (440de41)

  • NODE-3176: handle errors from MessageStream (#2780) (76b110e)

  • NODE-3194: Ignore undefined and null options in MongoClient constructor (#2800) (8bb92f9)

  • NODE-3197: revert setImmediate in waitQueue (#2802) (6c0dfef)

  • NODE-3206: Make distinct use any[] type instead of Document[] (#2795) (b45e3b3)

  • NODE-3219: topology no longer causes close event (#2792) (6cd982f)

  • NODE-1812: replace returnOriginal with returnDocument option (#2803) (1cdc8a8)

  • NODE-2978: remove deprecated bulk ops (#2794) (c3a1839)

  • NODE-3157: update find and modify interfaces for 4.0 (#2799) (29512da)


Documentation

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

To try the beta use the following command:

npm install [email protected]

Thanks very much to all the community members who contributed to this release!

node-mongodb-native - v3.6.6

Published by nbbeeken over 3 years ago

The MongoDB Node.js team is pleased to announce version 3.6.6 of the driver

Release Highlights

This patch addresses a number of bugs listed below.
Most notably, for client side encryption users upgrading to this version of the driver along with the new version of [email protected] will alleviate the potential deadlock case if your connection pool was fully utilized. There will now be an internal MongoClient that will be used for metadata look ups (e.g, listCollections) when the pool size is under certain constraints. The events generated from this client are forwarded to the client instance you initialize so it is possible to monitor all events.

Bug

  • [NODE-2995] - Sharing a MongoClient for metadata lookup can lead to deadlock in drivers using automatic encryption
  • [NODE-3050] - Infinite loop on Windows due to a bug in require_optional package
  • [NODE-3120] - TypeError: Cannot read property 'roundTripTime' of undefined
  • [NODE-3122] - Pipelining an upload stream of GridFSBucket never finishes on Node v14
  • [NODE-3129] - Collection () .. .setReadPreference() not routing query to secondaries
  • [NODE-3133] - autoEncryption produces serverHeartbeatFailed - with MongoError typemismatch

Improvement

  • [NODE-3070] - Define error handling behavior of writeErrors and writeConcernError on Mongos

Documentation

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

Thanks very much to all the community members who contributed to this release!

node-mongodb-native - v4.0.0-beta.3

Published by nbbeeken over 3 years ago

The MongoDB Node.js team is pleased to announce version 4.0.0-beta.3 of the driver

This release brings us closer to the RC release for the fully typescript enabled version 4.0.0 of the driver.
You can expect a full migration and detailed list of changes with the upcoming RC.

All Changes

  • always close gridfs upload stream on finish (#2759) (1c6f544)
  • don't auto destroy read stream for Node 14 (d4e297e)
  • move session support check to operation layer (#2750) (c19f296)
  • remove existing session from cloned cursors (30ccd86)
  • NODE-3071: Ignore error message if error code is defined (#2770) (d4cc936)
  • NODE-3152: ensure AWS environment variables are applied properly (#2756) (341a602)
  • add fermium to evergreen test runs (#2762) (2303b41)

Documentation

node-mongodb-native - v3.6.5

Published by nbbeeken over 3 years ago

The MongoDB Node.js team is pleased to announce version 3.6.5 of the driver!

Notable Fixes

In this patch there is a fix surrounding an issue some users were encountering in serverless environments when using the Unified Topology. If the nodejs process went unused for a great amount of time there was an intermittent issue that would cause startSession to fail, however, issuing a dummy read request would resolve the problem. The session support check is now done after server selection meaning the driver has the most up to date information about the MongoDB deployment before utilizing sessions. We encourage any user's that implemented workarounds to updated their driver and make use of this fix.

In addition, the previous release of our driver added a warning about an upcoming change in the v4 version of the driver about how users can specify their write concern options. We've updated the driver to use nodejs's process.emitWarning API in nearly all cases where the driver prints something out, as well as limit most warning messages to only be printed once.

Bug

  • session support detection spec compliance (#2732) (9baec71)
  • [NODE-3100] - startSession fails intermittently on servers that support sessions
  • [NODE-3066] - Accessing non-existent property 'MongoError' of module exports inside circular dependency
  • [NODE-3114] - Incorrect warning: Top-level use of w, wtimeout, j, and fsync is deprecated
  • [NODE-3119] - Node 14.5.4, mongo 3.6.4 Circular warnings
node-mongodb-native - v4.0.0-beta.2

Published by nbbeeken over 3 years ago

The MongoDB Node.js team is pleased to announce version 4.0.0-beta.2 of the driver

This release brings us closer to the RC release for the fully typescript enabled version 4.0.0 of the driver.
You can expect a full migration and detailed list of changes with the upcoming RC.

Breaking Changes

All Changes

  • add FLE AWS sessionToken TypeScript definitions (#2737) (f4698b5)
  • remove catch for synchronous socket errors and remove validation on nodejs option (#2746) (a516903)
  • session support detection spec compliance (#2733) (1615be0)
  • remove deprecated items (#2740) (ee1a4d3)
  • remove enums in favor of const objects (#2741) (d52c00e)

Documentation

Reference: https://docs.mongodb.com/drivers/node
API: https://mongodb.github.io/node-mongodb-native/4.0
Changelog: https://github.com/mongodb/node-mongodb-native/blob/4.0/HISTORY.md

node-mongodb-native - v4.0.0-beta.1

Published by nbbeeken over 3 years ago

Release Highlights

This beta release addresses a few bugs relating to using CSFLE with the beta version of the driver. As well as a fix for BulkWriteResult and BulkWriteError to correctly reflect the operation's result information.

You can take a look at the raw updates list in our HISTORY.md file, we are intending to do a complete rundown of features and fixes with the v4.0.0 release.

You can give it a try with:

npm install mongodb@beta

If you have any suggestions about clarifying documentation or if you run into any issues or have any feature ideas please let us know! You can make an account and submit tickets to our JIRA project here.

Documentation

Reference: https://docs.mongodb.com/drivers/node
API: https://mongodb.github.io/node-mongodb-native/4.0
Changelog: https://github.com/mongodb/node-mongodb-native/blob/4.0/HISTORY.md

node-mongodb-native - v3.6.4

Published by nbbeeken over 3 years ago

MongoDB Driver v3.6.4

The MongoDB Node.js team is pleased to announce version 3.6.4 of the driver

Release Highlights

Explain Support

The full set of $explain verbosity settings are now supported:

  • queryPlanner
  • queryPlannerExtended
  • executionStats
  • allPlansExecution

In the following commands:

  • aggregate() (MDB 3.0+)
  • find() (MDB 3.0+)
  • remove() (MDB 3.0+)
  • update() (MDB 3.0+)
  • distinct() (MDB 3.2+)
  • findAndModify() (MDB 3.2+)
  • mapReduce() (MDB 4.4+)

You can get a lot of insight into the performance of a query or optimization using these fine grained reports.
To learn more about how to use explain read here.

Direct Connection Issue Revert

We removed automatic direct connection for the unified topology in the 3.6.3 release of the driver. This change was preparatory for the 4.0 version of the driver, where we'll always perform automatic discovery. To avoid making this kind of change in a patch release, this version restores automatic direct connection when connecting to a single host using the unified topology without a specified replicaSet and without directConnection: false, in line with previous 3.6 releases.

NOTE: In the next major version the unifiedTopology is the only Topology and it is required to either specify a replicaSet name or enable directConnection in order to connect to single nodes in a replica set.

Support Azure and GCP keystores in FLE

There are no functional changes to the driver to support using Azure and GCP keystores but a new mongodb-client-encryption release (v1.2.0) can be found here which prominently features support for these key stores.

Documentation

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

Thanks very much to all the community members who contributed to this release!

Release Notes

Bug

  • [NODE-2355] - GridFSBucketWriteStream doesn't implement stream.Writable properly
  • [NODE-2828] - noCursorTimeout does not seem to for find()
  • [NODE-2874] - Setting connectionTimeoutMS to 0 will result in a disconnection every heartbeatFrequencyMS
  • [NODE-2876] - Race condition when resetting server monitor
  • [NODE-2916] - Legacy topology hangs with unlimited socket timeout
  • [NODE-2945] - ignoreUndefined not works on findOneAndUpdate when { upsert: true }
  • [NODE-2965] - MongoClient.readPreference returns "primary" ignoring readPref from connection string
  • [NODE-2966] - Unified topology: server selection fails when trying to connect to a remote replica set with a member whose 'host' attribute resolves to 'localhost'
  • [NODE-2977] - Query parameters with path in connection string not working on windows
  • [NODE-2986] - MongoError: pool destroyed

Features

  • [NODE-2762] - Comprehensive Support for Explain
  • [NODE-2852] - Add explain support to non-cursor commands
  • [NODE-2853] - Add explain support to cursor-based commands

Improvement

  • [NODE-1726] - Deprecate Topology events in Db
  • [NODE-2825] - Support Azure and GCP keystores in FLE
  • [NODE-2880] - Improve stack traces in the session leak checker
  • [NODE-2895] - Update AggregateCursor "unwind" method to match the native driver
  • [NODE-2995] - Sharing a MongoClient for metadata lookup can lead to deadlock in drivers using automatic encryption
node-mongodb-native - v4.0.0-beta.0

Published by nbbeeken almost 4 years ago

The MongoDB Node.js team is pleased to announce a beta version v4.0.0-beta.0 of the driver.

A major motivation for releasing this beta was the migration of the entire code base to TypeScript. While we took special care to ensure a smooth transition, we imagine such a dramatic change might reveal unexpected issues. This beta release makes it easy to easily check compatibility with your application and make use of the included type definitions.

Additionally, we are publishing an early version of the new API documentation https://mongodb.github.io/node-mongodb-native/4.0.

You can take a look at the raw updates list in our HISTORY.md file, we are intending to do a complete rundown of features and fixes with the v4.0.0 release.

You can give it a try with:

npm install mongodb@beta

If you have any suggestions about clarifying documentation or if you run into any issues or have any feature ideas please let us know! You can make an account and submit tickets to our JIRA project here.

Documentation

Reference: https://docs.mongodb.com/drivers/node
API: https://mongodb.github.io/node-mongodb-native/4.0
Changelog: https://github.com/mongodb/node-mongodb-native/blob/4.0/HISTORY.md