NodeJS Driver 4.12.0 Released

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 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

Bug Fixes

  • NODE-4609: allow mapping to falsey non-null values in cursors (#3452) (1bf6ef1)
  • NODE-4735: fix change stream consecutive resumabilty (#3453) (89b27e9)
  • NODE-4753: remove erroneous deprecation of geoNear (#3465) (199dcaf)
  • NODE-4783: handle orphaned operation descriptions (#3463) (4c9b4d8)

Documentation

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

1 Like