For AI agents: a documentation index is available at https://www.mongodb.com/docs/llms.txt — markdown versions of all pages are available by appending .md to any URL path.
Docs Menu

Compress Network Traffic

MongoDB drivers can compress the messages sent to and received from MongoDB Server. This reduces the amount of data transferred for each operation. Compression can improve performance over constrained networks and lower the data transfer costs associated with running MongoDB Atlas.

Compression operates at the wire protocol level, so it applies to every operation that your application performs. If you specify more than one algorithm, the driver uses the first algorithm in your list that MongoDB Server also supports.

MongoDB drivers support the following compression algorithms:

MongoDB Atlas charges for data transferred across cloud regions, cloud providers, and between your infrastructure and MongoDB Atlas. Network compression reduces the amount of data that your application sends and receives, which can lower these data transfer costs. To learn more about pricing, see Data Transfer Costs.

Network compression also has productivity benefits. Compressed messages take less time to transfer across the network, which can improve your application's response times. Compression also reduces the bandwidth that your MongoDB traffic uses, which leaves more bandwidth available for other applications on the same network.

When you choose a compression algorithm, consider the following guidelines:

  • Use Zstandard for a balance of compression efficiency and resource usage. Zstandard is a good default choice for most applications.

  • Use Snappy for latency-sensitive applications that require minimal computational overhead.

  • Use Zlib for broad compatibility across MongoDB drivers and environments.

Tip

Monitor CPU Usage

Compression trades network bandwidth for CPU usage. After you enable network compression, monitor your application's CPU utilization to confirm that the trade-off benefits your workload. To learn more about these trade-offs, see the CPU Utilization and Network Compression in MongoDB blog post.

The following table lists the minimum supported driver and MongoDB Server version for each compression algorithm:

Compression Algorithm
Minimum Driver Version
Minimum Server Version

3.6

4.2

3.6

4.2

3.11

4.2

To enable network compression for your MongoDB connection, install the required dependencies and specify the compression algorithms that you want to use.

The following table lists each algorithm and the dependency it requires, if any:

Compression Algorithm
Dependency

Snappy

Download snappy-java, a Java JNI wrapper for the Snappy library. To install, see snappy-java in Maven Central.

Zlib

None. The driver natively supports Zlib compression.

Zstandard

Download zstd-jni, a Java JNI wrapper for the Zstandard library. To install, see zstd-jni in Maven Central.

You can enable compression for the connection to your MongoDB instance by specifying the algorithms in one of the following ways:

  • Use the compressors parameter in your connection string

  • Chain the compressorList() method to the MongoClientSettings.builder() method

Select the Connection String or MongoClientSettings tab to see the corresponding syntax:

Include the following parameters in your connection string to enable compression:

Option Name
Type
Description

compressors

string

Specifies one or more compression algorithms that the driver will attempt to use to compress requests sent to the connected MongoDB instance. Possible values include: zlib, snappy, and zstd.

Default: null

zlibCompressionLevel

integer

Specifies the degree of compression that Zlib uses to decrease the size of requests to the connected MongoDB instance. The level can range from -1 to 9, with lower values compressing faster (but resulting in larger requests) and larger values compressing slower (but resulting in smaller requests).

Default: null

The following specifies the order in which the driver will attempt to compress requests before they are sent:

ConnectionString connectionString = new ConnectionString(
"mongodb+srv://<db_username>:<db_password>@<cluster-url>/?compressors=snappy,zlib,zstd");
MongoClient client = MongoClients.create(connectionString);

For more information about these parameters, see the ConnectionString API documentation.

Chain the following methods to your MongoClientSettings constructor to modify the driver's compression behavior:

Method
Description

compressorList()

Sets the compressors to use for compressing messages to the server.

MongoClientSettings settings = MongoClientSettings.builder()
.compressorList(Arrays.asList(MongoCompressor.createSnappyCompressor(),
MongoCompressor.createZlibCompressor(),
MongoCompressor.createZstdCompressor()))
.build();
MongoClient client = MongoClients.create(settings);

For more information about the chained methods, see the MongoClientSettings.Builder API documentation.

To learn more about any of the methods or types discussed in this guide, see the following API documentation: