MongoDB Protocol Configuration
MongoDB Protocol Configuration
Complete configuration reference for HeliosDB’s MongoDB protocol implementation.
Server Configuration
Network Settings
[mongodb]# Listen address for MongoDB wire protocollisten_address = "0.0.0.0"
# MongoDB wire protocol port (default: 27017)port = 27017
# Maximum concurrent connectionsmax_connections = 1000
# Connection timeout in secondsconnection_timeout = 30
# Idle connection timeout (0 = disabled)idle_timeout = 600Authentication
[mongodb.auth]# Enable authenticationenabled = true
# Authentication mechanism: "SCRAM-SHA-256", "MONGODB-X509"mechanism = "SCRAM-SHA-256"
# Authentication databaseauth_source = "admin"
# User credentials fileusers_file = "/etc/heliosdb/mongodb_users.json"TLS/SSL Configuration
[mongodb.ssl]# Enable TLSenabled = false
# Certificate filescert_file = "/etc/heliosdb/server.crt"key_file = "/etc/heliosdb/server.key"ca_file = "/etc/heliosdb/ca.crt"
# Require client certificatesrequire_client_cert = false
# Minimum TLS versionmin_version = "1.2"Wire Protocol Settings
[mongodb.protocol]# Maximum message size (bytes)max_message_size = 48000000 # 48MB
# Maximum BSON document size (bytes)max_bson_size = 16777216 # 16MB
# Maximum batch size for operationsmax_batch_size = 100000
# Enable compressioncompression = truecompression_algorithms = ["zstd", "snappy", "zlib"]Cursor Settings
[mongodb.cursors]# Default cursor batch sizedefault_batch_size = 101
# Cursor timeout in secondscursor_timeout = 600
# Maximum cursors per connectionmax_cursors_per_connection = 1000Change Streams
[mongodb.change_streams]# Enable change streamsenabled = true
# Maximum change stream connectionsmax_streams = 100
# Full document lookup: "default", "updateLookup", "whenAvailable", "required"full_document = "updateLookup"
# Resume token expiration (hours)resume_token_expiration = 24Connection String Format
Standard Format
mongodb://[username:password@]host[:port][/database][?options]Connection Options
| Option | Type | Default | Description |
|---|---|---|---|
authSource | string | admin | Authentication database |
authMechanism | string | SCRAM-SHA-256 | Auth mechanism |
replicaSet | string | - | Replica set name |
tls | boolean | false | Enable TLS |
tlsCAFile | string | - | CA certificate file |
tlsCertificateKeyFile | string | - | Client cert/key file |
connectTimeoutMS | integer | 10000 | Connection timeout |
socketTimeoutMS | integer | 0 | Socket timeout |
maxPoolSize | integer | 100 | Connection pool size |
minPoolSize | integer | 0 | Minimum pool size |
maxIdleTimeMS | integer | 0 | Max idle time |
retryWrites | boolean | true | Retry failed writes |
retryReads | boolean | true | Retry failed reads |
w | string/int | 1 | Write concern |
journal | boolean | false | Journal write concern |
readPreference | string | primary | Read preference |
compressors | string | - | Compression algorithms |
Connection Examples
# Basic connectionmongodb://localhost:27017/mydb
# With authenticationmongodb://user:password@localhost:27017/mydb?authSource=admin
# With TLSmongodb://user:password@localhost:27017/?tls=true&tlsCAFile=/path/to/ca.pem
# With connection poolmongodb://localhost:27017/?maxPoolSize=50&minPoolSize=10
# Replica setmongodb://host1:27017,host2:27017,host3:27017/?replicaSet=rs0
# Full configurationmongodb://user:password@host:27017/mydb?authSource=admin&authMechanism=SCRAM-SHA-256&tls=true&retryWrites=true&w=majorityClient Configuration
Python (PyMongo)
from pymongo import MongoClient
# Using connection stringclient = MongoClient( "mongodb://localhost:27017/", authSource="admin", authMechanism="SCRAM-SHA-256", maxPoolSize=50, minPoolSize=10, socketTimeoutMS=30000, connectTimeoutMS=10000, retryWrites=True)
# Using MongoClient parametersclient = MongoClient( host="localhost", port=27017, username="user", password="password", authSource="admin", tls=True, tlsCAFile="/path/to/ca.pem")Node.js
const { MongoClient } = require('mongodb');
const client = new MongoClient('mongodb://localhost:27017/', { auth: { username: 'user', password: 'password' }, authSource: 'admin', maxPoolSize: 50, minPoolSize: 10, socketTimeoutMS: 30000, connectTimeoutMS: 10000, retryWrites: true, retryReads: true});Java
import com.mongodb.ConnectionString;import com.mongodb.MongoClientSettings;import com.mongodb.client.MongoClients;
String connectionString = "mongodb://user:password@localhost:27017/?authSource=admin";
MongoClientSettings settings = MongoClientSettings.builder() .applyConnectionString(new ConnectionString(connectionString)) .applyToConnectionPoolSettings(builder -> builder.maxSize(50).minSize(10)) .applyToSocketSettings(builder -> builder.connectTimeout(10, TimeUnit.SECONDS) .readTimeout(30, TimeUnit.SECONDS)) .retryWrites(true) .retryReads(true) .build();
MongoClient client = MongoClients.create(settings);Write Concern
Configuration
from pymongo import WriteConcern
# Acknowledged writecollection.with_options(write_concern=WriteConcern(w=1))
# Majority writecollection.with_options(write_concern=WriteConcern(w="majority"))
# Journaled writecollection.with_options(write_concern=WriteConcern(w=1, j=True))
# Unacknowledged writecollection.with_options(write_concern=WriteConcern(w=0))Write Concern Options
| Option | Description |
|---|---|
w=0 | Unacknowledged, no response |
w=1 | Acknowledged by primary |
w=majority | Acknowledged by majority |
w=<n> | Acknowledged by n nodes |
j=true | Written to journal |
wtimeout=<ms> | Write timeout |
Read Preference
Configuration
from pymongo import ReadPreference
# Primary (default)collection.with_options(read_preference=ReadPreference.PRIMARY)
# Primary preferredcollection.with_options(read_preference=ReadPreference.PRIMARY_PREFERRED)
# Secondarycollection.with_options(read_preference=ReadPreference.SECONDARY)
# Secondary preferredcollection.with_options(read_preference=ReadPreference.SECONDARY_PREFERRED)
# Nearestcollection.with_options(read_preference=ReadPreference.NEAREST)Transaction Settings
from pymongo import WriteConcern, ReadConcernfrom pymongo.read_preferences import ReadPreference
with client.start_session() as session: session.start_transaction( read_concern=ReadConcern("snapshot"), write_concern=WriteConcern("majority"), read_preference=ReadPreference.PRIMARY )
try: # Operations session.commit_transaction() except Exception: session.abort_transaction()Performance Tuning
Connection Pool
[mongodb.pool]# Maximum connectionsmax_size = 100
# Minimum connectionsmin_size = 10
# Maximum idle time (ms)max_idle_time_ms = 60000
# Wait queue timeout (ms)wait_queue_timeout_ms = 30000Query Optimization
[mongodb.query]# Enable query cachequery_cache = true
# Query cache size (MB)query_cache_size = 256
# Slow query threshold (ms)slow_query_threshold_ms = 100
# Log slow querieslog_slow_queries = trueMonitoring
Server Status
// Check server statusdb.adminCommand({ serverStatus: 1 })
// Check connection infodb.adminCommand({ connectionStatus: 1 })
// Get current operationsdb.adminCommand({ currentOp: 1 })Metrics
// Collection statsdb.collection.stats()
// Database statsdb.stats()
// Index statsdb.collection.aggregate([{ $indexStats: {} }])Related: README.md | COMPATIBILITY.md | EXAMPLES.md
Last Updated: December 2025