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.

All versions of the Laravel Integration support each network compression algorithm.

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

Compression Algorithm
Minimum Server Version

4.2

4.2

4.2

To enable network compression for your MongoDB connection, perform the following steps:

  • Build the MongoDB PHP Extension with the required dependencies. The extension handles network compression, not the Laravel Integration.

  • Specify the compression algorithms you want to use.

Because the Laravel Integration uses the MongoDB PHP Extension and the MongoDB C Driver to implement network compression, you must install the C driver with the required dependencies. To view these dependencies, see Install Dependencies in the C driver documentation.

To enable compression for the connection to your MongoDB instance, update the connections array in your application's config/database.php configuration file. You can specify the compression algorithms in one of the following ways:

  • Include the compressors option in the options array

  • Use the compressors parameter in the dsn connection string

Select the Options Array or Connection String tab to view an example that specifies all available compressors:

'connections' => [
'mongodb' => [
'dsn' => 'mongodb+srv://mongodb0.example.com/',
'driver' => 'mongodb',
'database' => 'sample_mflix',
'options' => [
'compressors' => 'snappy,zstd,zlib',
],
],
],
'connections' => [
'mongodb' => [
'dsn' => 'mongodb+srv://mongodb0.example.com/?compressors=snappy,zstd,zlib',
'driver' => 'mongodb',
'database' => 'sample_mflix',
],
],

If you specify Zlib as one of your compression algorithms, you can use the zlibCompressionLevel option to specify a compression level. This option accepts an integer value between -1 and 9, and values have the following effects:

  • -1: (Default) Zlib uses its default compression level (usually 6).

  • 0: No compression.

  • 1: Fastest speed but lowest compression.

  • 9: Best compression but slowest speed.

Select the Options Array or Connection String tab to view an example that sets the zlibCompressionLevel option to 1:

'connections' => [
'mongodb' => [
'dsn' => 'mongodb+srv://mongodb0.example.com/',
'driver' => 'mongodb',
'database' => 'sample_mflix',
'options' => [
'compressors' => 'zlib',
'zlibCompressionLevel' => 1,
],
],
],
'connections' => [
'mongodb' => [
'dsn' => 'mongodb+srv://mongodb0.example.com/?compressors=zlib&zlibCompressionLevel=1',
'driver' => 'mongodb',
'database' => 'sample_mflix',
],
],