MongoRelease Notes


A complete re-write from the ground up. Optimised to work with Mongo's stable API v1, as introduced in Mongo 5.2.


  • New: Added connection debug info to MongoConnMgr.props.
  • Fix: Added a guard against Mongo getMore() returning an empty batch.


  • Chg: Initial socket connection errors are now subject to an binary exponential backoff algorithm. This makes re-connections after a failover more robust.


  • Chg: Remove any default auto-added writeConcerns from cmds when running inside multi-statement transactions.
  • Bug: Fixed TLS SNI issue when retrying cmds sent to an Atlas sharded cluster during a failover re-connection.


  • New: Added MongoConnMgr.isConnected() utility method.
  • Chg: Moar explicit err msgs on duplicate index key errors.
  • Chg: Exposed (unofficial) disableTxns MongoConn URL query option.
  • Bug: Fixed NPE on checking out conns after a lost connection.
  • Bug: Fixed detached sessions being checked in during multi-read cursor ops.


  • New: Support for multi-document, multi-collection transactions. See MongoConnMgr.runInTxn().
  • New: Retryable read and retryable write support via logical sessions, for robustness.
  • New: zlib msg compression now supported via the OP_COMPRESSION cmd.
  • New: Connections now linger before being closed (by maxIdleTimeMS) to avoid socket throttling during bursts of activity.
  • New: db() and coll() convenience methods on MongoColl and MongoIdx.
  • New: appname is now supported in Mongo connection URLs and passed to MongoDB handshakes.
  • Chg: Exposed new MongoConnUrl class with connection URL options.
  • Chg: Refactored the structure of MongoConnMgr and re-assessed its methods (breaking backwards compatibility).


  • New: Everything!
  • Chg: Class names have been abbreviated and start with a Mongo prefix.



  • New: Updated to be compatible with Fantom 1.0.77.
  • Chg: Connections are no longer closed if there are more messages queued up to use the pool.
  • Chg: When TcpConnection throws an IOErr on TCP connection, the cause is no longer lost.


  • New: Added ConnectionManagerPooled.isConnectedToMaster().
  • Chg: Exposed ConnectionManager in Collection and Database classes.
  • Chg: Better handling of network IO errors.
  • Bug: Fixed potential deadlock during failovers.


  • New: Support for MongoDB 4.2 and dodgy MongoDB Altas clusters.
  • New: Added ssl and authSource MongoDB connection option.
  • New: Contains UberPod meta data.
  • Chg: Database connections authenticate against the authSource, not themselves.
  • Chg: Fixed Cursor.count() to work with MongoDB 4.2.


  • New: Collection.deleteAll() convenience method.
  • Chg: skip and limit values are clamped at 0 to prevent negative values - which cause server errors.


  • Chg: Collection.update() returns a map of update data and not just the number of docs updated. (Potential breaking change.)


  • Bug: Failover did not occur when a host simply went offline and refused connections.


  • New: Proper fail over in the event of lost connections. Ensure your MongoDB URL has multiple host nodes.
  • New: Should the Master Mongo connection switch / fail over to a replica node, the Connection Manager automatically plays "Hunt the Primary" to re-establish connection with the new Master.
  • Chg: Re-jigged the signature of Collection.create(). (Potential breaking change.)
  • Chg: Exposed MongoCmdErr and added code() and errmsg() helper methods.
  • Chg: PooledConnectionManager.minPoolSize now defaults to 1 (used to be 0).


  • New: PrettyPrinter for printing MongoDB documents.
  • New: Index.TEXT for creating text indexes.
  • Chg: Replaced Cursor.fields with Cursor.projection. (Breaking change.)
  • Chg: Exposed some advanced use classes.
  • Chg: Removed deprecated MongoDB 2.6 methods.



  • Bug: Database.collectionNames() didn't work with MongoDB v3.2+ and WiredTiger storage.


  • New: Collection.runCmd(...) to run arbitrary commands against collections.
  • Chg: Updates to Collections and Indexes to work with MongoDB v3.2+ and WiredTiger storage.
  • Chg: Created a couple xxx26() methods that now only with MongoDB v2.6.
  • Bug: Creating unique indexes didn't work.


  • New: SCRAM-SHA-1 over SASL - New authentication protocol for MongoDB 3.x.
  • Chg: Updated journal in write concern to j.
  • Chg: Allowed some Collection methods to take null queries.


  • Chg: Changed the signature of Collection.mapReduce() to make out default to inline. (Breaking change.)


  • New: Updated for MongoDB 3.x.
  • Chg: Added fieldNames parameter to findAll() - see Issue #1.
  • Chg: Made the deleteMulti(), insertMulti() and updateMulti() methods in Collection public.
  • Chg: Documented some options parameters.


  • New: Support for connecting to Replica Sets via multiple hosts in the Mongo connection URL. All read and write operations performed on the primary.
  • New: Support for the waitQueueTimeoutMS Mongo connection URL option with a truncated binary exponential backoff algorithm to wait for available connections.
  • New: Support for write concern options in the Mongo connection URL.
  • New: Support for connectTimeoutMS and socketTimeoutMS Mongo URL connection options.
  • Chg: The default write concern has moved out of MongoClient / Database / Collection / User and into the ConnectionManager.
  • Chg: Cursor.count now takes into account skip and limit.
  • Chg: Renamed ConnectionManager.mongoUri -> ConnectionManager.mongoUrl.
  • Chg: Index keys must be ordered if they contain more than one entry.
  • Chg: Better Err msg if could not connect to MongoDB.
  • Bug: Cursor.count threw an Err if the query was ordered.



  • Bug: Index.ensure() when comparing indexes did not respect unique:false.


  • New: ConnectionManagerPooled instances are created with a Mongo Connection URI.
  • New: ConnectionManagerPooled accepts default database and user credentails to initially authenticate all leased connections with.


  • New: Preview Release