Docs Menu

What's New

Learn what's new in:

The 5.4 driver release includes the following changes, fixes, and features:

  • Supports $lookup operations for CSFLE and QE. To learn more, see the following references in the Server manual:

  • Updates AWS SDK dependencies to 2.30.31 and 1.12.782 for testing the MONGODB-AWS authentication mechanism.

  • Adds a sort option to the ClientUpdateOneOptions and ClientReplaceOneOptions classes. This change allows you to set a sort order for update and replace operations in client bulk writes. To learn more, see the Update Operation and Replace Operation sections of the Bulk Operations guide.

  • Adds Kubernetes support for OIDC authentication. To learn more, see the MONGODB-OIDC: Kubernetes section of the Enterprise Authentication Mechanisms guide.

  • Adds first class support for the following Atlas Search query operators:

    • phrase

    • regex

    • queryString

    • equals

    • moreLikeThis

    • in

    • wildcard

    To learn more, see the SearchOperator interface API documentation.

  • Updates cursors to refresh the timeoutMS setting when you call close() without affecting the operation timeout.

  • Enables you to use an index when calling the distinct() method by specifying a hint option.

To view a full list of changes in this release, see the v5.4 release notes on GitHub.

The 5.3 driver release includes the following new features, improvements, and fixes:

  • Important: The next minor release will drop support for MongoDB Server version 4.0 and raise the minimum supported version to 4.2. We recommend making changes to your application to accommodate breaking changes. See the Release Notes section in the Server manual to learn more about upgrading.

  • Adds the BinaryVector class to implement BSON Binary Subtype 9 for vector storage and retrieval. This class provides more effective storage of values compared a list of Double instances. You can create the following vector types based on the type of elements your vector contains:

    • Int8BinaryVector: Vector of 8-bit signed integers

    • Float32BinaryVector: Vector of floating-point numbers

    • PackedBitBinaryVector: Binary quantized vector (In beta and subject to change before becoming generally available)

    To learn more about this feature, see Vector Quantization in the Atlas documentation. To learn about how to use this type when using the Atlas Vector Search feature, see the Atlas Vector Search guide.

  • Removes explicit fairness from the connection pool implementation. This change might contribute to better throughput when you use a MongoClient instance in many application threads. However, this change might cause increased tail latency.

  • Adds a sort option to the updateOne() and replaceOne() methods. This change also allows you to set a sort as an option when creating ReplaceOneModel and UpdateOneModel instances. To learn more, see the Modify Documents and Bulk Operations guides.

  • Support for using builders class methods directly with data class properties. To learn more, see the Use Builders with Data Classes guide. This functionality is supported by the Kotlin driver Extensions package published with this release.

  • Implements a client bulk write API that allows you to perform write operations on multiple databases and collections in the same call. To learn more about this feature, see the Client Bulk Write section of the Bulk Operations guide.

Important

Removal of Support for MongoDB server 3.6

Kotlin driver v5.2 removes support for MongoDB server 3.6. To learn more about compatible versions of the server, see Compatibility.

The 5.2 driver release includes the following new features, improvements, and fixes:

  • Enables setting a client-side operations timeout (CSOT). This feature allows you to set a single timeout on your MongoClient instance that applies to all operations performed with that client. To learn more, see the MongoClientSettings.Builder.timeout() API documentation.

    Important

    Deprecated Timeout Options

    The following timeout options are deprecated:

    • waitQueueTimeoutMS

    • socketTimeoutMS

    • wTimeoutMS

    • maxTimeMS

    • maxCommitTimeMS

    Use the CSOT feature to replace the functionality of these options.

  • Adds the SearchIndexType class, which you can pass when constructing a SearchIndexModel instance. This change allows you to specify the index type when creating an Atlas Search or Vector Search index. To learn more, see Atlas Search and Vector Search Indexes in the Indexes guide.

  • Delegates the implementation of the algorithms that implement the SCRAM-SHA-1 and SCRAM-SHA-256 authentication mechanisms to the configured JCA provider. This change means that your application can use a configured FIPS-compliant JCA provider to provide a higher level of security.

  • Revises the mongodb-crypt dependency versioning to match the versioning for the JVM drivers. Future versions of mongodb-crypt will be released alongside the driver and will share the same version number. You must upgrade your mongodb-crypt dependency to v5.2.0 when upgrading your driver for this release. To learn more, see the In-Use Encryption guide.

  • Performance improvements due to implementation of native cryptography on all supported platforms. The following list describes the actions needed to implement this improvement depending on your operating system:

    • Windows: Upgrade your mongodb-crypt version to v5.2.0.

    • Mac: Upgrade your mongodb-crypt version to v5.2.0.

    • Linux: Install libmongocrypt.so directly on the file system, instead of using the file that is bundled within the mongodb-crypt JAR file. You can find Linux instructions to install libmongocrypt in the Server manual. If you use a package manager to install libmongocrypt, Java Native Access (JNA) will find it there without further configuration. Alternatively, you can specify the search path by setting the LD_LIBRARY_PATH environment variable to the file path of the libmongocrypt package.

      We recommend direct installation because the bundled shared library does not link with OpenSSL due to the potential for OpenSSL binary incompatibilities.

      The shared library loading is handled by JNA. You can view the rules for library loading search path order in the NativeLibrary class documentation.

  • Fixes an issue that caused the InsertOneResult.getInsertedId() and InsertManyResult.getInsertedIds() methods to return incorrect document IDs in some situations. This change is backported to Kotlin driver v5.1.4 and v4.11.4.

  • When a sharded cluster operation is unsuccessful, the driver avoids selecting the same mongos server for operation retry attempts if other mongos servers are available.

  • Adds reachability metadata needed when your application uses GraalVM Native Image. This metadata replaces the need for collecting reachability metadata when using the driver libraries. To learn more, see Reachability Metadata in the GraalVM documentation.

    This change does not add the libjnidispatch and libmongocrypt resource entries, because adding entries for all supported platforms (targets) significantly affects the size of native executables built using GraalVM Native Image. View this sample resource-config.json file in the driver GitHub repository to see how to specify these entries explicitly if your application depends on the org.mongodb:mongodb-crypt library.

  • Enables exact vector search by extending the VectorSearchOptions API to introduce the following specific option subtypes:

    • ExactVectorSearchOptions: Use this options type to enable precise matching, ensuring that results are the closest vectors to a given query vector.

    • ApproximateVectorSearchOptions: Use this options type to enable searches that might not return the exact closest vectors. You can pass a numCandidates parameter when instantiating this type to specify the number of nearest neighbors to consider.

    To learn more about using the Atlas Vector Search feature, see Atlas Vector Search in the Aggregates Builders guide.

  • Adds support for serializers from the kotlinx-datetime library that let you map Kotlin date and time types to BSON as the expected types instead of as strings. To learn more, see the Serialize Dates and Times section of the Kotlin Serialization guide.

  • Supports serialization of JsonElement values. To work with the JsonElement type, you must add the kotlinx-serialization-json library as a dependency in your application.

The 5.1.3 driver patch release includes the following changes:

  • Fixes an issue that could cause assertion errors when using Cursor types.

The 5.1.2 driver patch release includes the following changes:

  • Support for encoding Kotlin data classes with nullable generic parameter types. For example, you can encode the Container class in the following code:

    @Serializable
    data class Box<T>(
    val boxed: T
    )
    @Serializable
    data class Container(
    val box: Box<String?>
    )

The 5.1.1 driver patch release includes the following changes:

  • When using the MONGODB-OIDC authentication mechanism, you must not include comma characters in the authMechanismProperties connection string value. To learn more about this behavior, see the MONGODB-OIDC section of the Enterprise Authentication guide.

Warning

Deprecations in this release

To avoid breaking changes in future major releases of the driver, replace any application code that depends on deprecated program elements.

This section includes the following information:

  • Support for MongoDB server v3.6 is deprecated and will be removed in the next driver version release. To learn how to upgrade your MongoDB server deployment, see Release Notes in the MongoDB server manual.

  • Internal testing of GraalVM native image technology. These tests involve building native applications by using the GraalVM native-image tool.

  • Enhanced support for the MONGODB-OIDC authentication mechanism. To learn more about OIDC, see the MONGODB-OIDC section of the Enterprise Authentication Mechanisms guide.

  • Fixes an issue in which operations used the incorrect codec when using a polymorphic MongoCollection instance. This ensures that discriminator information is not lost when using bson-kotlinx.

  • Fixes an issue in which the class discriminator was the first field when decoding, resulting in field type errors when using a polymorphic MongoCollection instance.

  • Support for polymorphic serialization. To learn more, see the Polymorphic Serialization section of the Kotlin Serialization guide.

  • Introduces the serverMonitoringMode connection URI option. To learn more, see the Connection Options guide.

New features of the 5.0 driver release include:

  • The KotlinSerializerCodecProvider constructor now accepts serializersModule and bsonConfiguration objects:

    KotlinSerializerCodec.create(clazz.kotlin, serializersModule=serializersModule, bsonConfiguration=bsonConfiguration)

    This makes it easier to customize your configuration.

  • Fixes a Kotlin reflection bug that resulted in container type erasure.

This section includes the following information:

Warning

Deprecations in this release

To avoid breaking changes in future major releases of the driver, replace any application code that depends on deprecated methods and types.

The 4.11 driver release deprecates the following items:

  • The following network address-related methods are deprecated and will be removed in v5.0:

    • The ServerAddress methods getSocketAddress() and getSocketAddresses().

      Instead of getSocketAddress(), use the getByName() instance method of java.net.InetAddress.

      Instead of getSocketAddresses(), use the getAllByName() instance method of java.net.InetAddress.

    • The UnixServerAddress method getUnixSocketAddress().

      Instead of getUnixSocketAddress(), construct an instance of jnr.unixsocket.UnixSocketAddress. Pass the full path of the UNIX socket file to the constructor. By default, MongoDB creates a UNIX socket file located at "/tmp/mongodb-27017.sock". To learn more about the UnixSocketAddress, see the UnixSocketAddress API documentation.

  • The following methods and types related to the StreamFactory interface are deprecated and scheduled for removal in v5.0:

    • streamFactoryFactory() method from MongoClientSettings.Builder

    • getStreamFactoryFactory() method from MongoClientSettings

    • NettyStreamFactoryFactory class

    • NettyStreamFactory class

    • AsynchronousSocketChannelStreamFactory class

    • AsynchronousSocketChannelStreamFactoryFactory class

    • BufferProvider class

    • SocketStreamFactory class

    • Stream class

    • StreamFactory class

    • StreamFactoryFactory class

    • TlsChannelStreamFactoryFactory class

    If you configure Netty by using MongoClientSettings.Builder.streamFactoryFactory(), your code might resemble the following:

    import com.mongodb.connection.netty.NettyStreamFactoryFactory;
    // ...
    MongoClientSettings settings = MongoClientSettings.builder()
    .streamFactoryFactory(NettyStreamFactoryFactory.builder().build())
    .build();

    Replace this code with the TransportSettings.nettyBuilder() as shown in the following example:

    import com.mongodb.connection.TransportSettings;
    // ...
    MongoClientSettings settings = MongoClientSettings.builder()
    .transportSettings(TransportSettings.nettyBuilder().build())
    .build();

New features of the 4.11 driver release include:

  • Support for connecting to MongoDB by using a SOCKS5 proxy.

  • Added the getSplitEvent() method to the ChangeStreamDocument class to identify fragments of a change stream event that exceeds 16MB. You must use the aggregation stage $changeStreamSplitLargeEvent in your change stream to handle events that exceed 16MB.

  • Added an aggregation stage builder for $vectorSearch.

  • Added Atlas Search index management helpers.

  • Updated Snappy and Zstd compression library dependency versions. To learn more about the current dependency versions, see Network Compression.

  • Added getElapsedTime() methods to the following classes to monitor the duration of connection pool events:

  • Support for Java 21 virtual threads and structured concurrency. The driver internals were updated to avoid unnecessary pinning of virtual threads and to preserve interrupted status of a thread, as the latter matters for structured concurrency where it is used for cancellation.

    To learn more about virtual threads, see the Virtual Threads JDK enhancement proposal. To learn more about structured concurrency, see the Structured Concurrency JDK enhancement proposal.

  • Updated API documentation for the following types:

Important

Starting in version 4.10.1 of the Kotlin driver, you must add the bson-kotlinx library as an explicit dependency to use the kotlinx-serialization library.

  • Support for Kotlin server-side usage, both for coroutines and for synchronous applications.

  • Codec support for Kotlin data classes.

  • Support for the kotlinx.serialization library