MongoDB Server - mongod, Configurations
Here you will learn what is MongoDB server, how to run it manually, and how to set various configuration settings for your MongoDB server.
We installed the MongoDB server as a Windows service in the Install MongoDB chapter. MongoDB windows service is automatically up and running at startup, as shown below.
Internally, the MongoDB service starts the local MongoDB server at the default address http://127.0.0.1:27017
whenever your machine starts.
MongoDB server is installed as mongod.exe on Windows in the {mongodb install folder}/bin
folder, as shown below.
The MongoDB server mongod can be started or stop manually whether you installed it as a service or not.
Run mongod Manually
If you have installed MongoDB as a windows service then stop the service first as we are going to start it manually.
Now, add {mongodb install folder}/bin
to your environment variable on your local Windows machine.
Search for "Environment" on windows search and click "Edit the system environment variable" to open system properties, as shown below.
Click on "Environment Variables.." to edit path, as shown below.
Now, select Path in the bottom pane and click on the Edit button. This will open "Edit environment variable" window. Click on the New button to add MongoDB folder path "C:\Program Files\MongoDB\Server\5.0\bin\", as shown below.
Click OK to close all pop-up windows.
Adding MongoDB folder path to environment variable allow us to run mongod.exe from anywhere on command prompt/terminal.
Now, open a command prompt on Windows or terminal as an administrator and execute the mongod
on Windows or sudo mongod
on Mac to run your MongoDB server, as shown below.
You can specify various command options with mongod
command for testing purposes.
The following is list of some useful command options.
-h [ --help ] Show this usage information --version Show version information -f [ --config ] arg Configuration file specifying additional options --configExpand arg Process expansion directives in config file (none, exec, rest) --port arg Specify port number - 27017 by default --ipv6 Enable IPv6 support (disabled by default) --listenBacklog arg (=2147483647) Set socket listen backlog size --maxConns arg (=1000000) Max number of simultaneous connections --pidfilepath arg Full path to pidfile (if not set, no pidfile is created) --timeZoneInfo arg Full path to time zone info directory, e.g. /usr/share/zoneinfo -v [ --verbose ] [=arg(=v)] Be more verbose (include multiple times for more verbosity e.g. -vvvvv) --quiet Quieter output --logpath arg Log file to send write to instead of stdout - has to be a file, not directory --logappend Append to logpath instead of over-writing --logRotate arg Set the log rotation behavior (rename|reopen) --timeStampFormat arg Desired format for timestamps in log messages. One of iso8601-utc or iso8601-local --setParameter arg Set a configurable parameter --bind_ip arg Comma separated list of ip addresses to listen on - localhost by default --bind_ip_all Bind to all ip addresses --noauth Run without security --transitionToAuth For rolling access control upgrade. Attempt to authenticate over outgoing connections and proceed regardless of success. Accept incoming connections with or without authentication. --slowms arg (=100) Value of slow for profile and console log --slowOpSampleRate arg (=1) Fraction of slow ops to include in the profile and console log --profileFilter arg Query predicate to control which operations are logged and profiled --auth Run with security --clusterIpSourceAllowlist arg Network CIDR specification of permitted origin for `__system` access --profile arg 0=off 1=slow, 2=all --cpu Periodically show cpu and iowait utilization --sysinfo Print some diagnostic system information --noscripting Disable scripting engine --notablescan Do not allow table scans --keyFile arg Private key for cluster authentication --clusterAuthMode arg Authentication mode used for cluster authentication. Alternatives are (keyFile|sendKeyFile|sendX509|x509) Replication options: --oplogSize arg Size to use (in MB) for replication op log. default is 5% of disk space (i.e. large is good) Replica set options: --replSet arg arg is[/ ] --enableMajorityReadConcern [=arg(=1)] (=1) Enables majority readConcern. enableMajorityReadConcern=false is no longer supported Sharding options: --configsvr Declare this is a config db of a cluster; default port 27019; default dir /data/configdb --shardsvr Declare this is a shard db of a cluster; default port 27018 Storage options: --storageEngine arg What storage engine to use - defaults to wiredTiger if no data files present --dbpath arg Directory for datafiles - defaults to \data\db\ which is C:\data\db\ based on the current working drive --directoryperdb Each database will be stored in a separate directory --syncdelay arg (=60) Seconds between disk syncs --journalCommitInterval arg (=100) how often to group/batch commit (ms) --upgrade Upgrade db if needed --repair Run repair on all dbs --journal Enable journaling --nojournal Disable journaling (journaling is on by default for 64 bit) --oplogMinRetentionHours arg (=0) Minimum number of hours to preserve in the oplog. Default is 0 (turned off). Fractions are allowed (e.g. 1.5 hours) Free Monitoring Options: --enableFreeMonitoring arg Enable Cloud Free Monitoring (on|runtime|off) --freeMonitoringTag arg Cloud Free Monitoring Tags Windows Service Control Manager options: --install Install Windows service --remove Remove Windows service --reinstall Reinstall Windows service (equivalent to --remove followed by --install) --serviceName arg Windows service name --serviceDisplayName arg Windows service display name --serviceDescription arg Windows service description --serviceUser arg Account for service execution --servicePassword arg Password used to authenticate serviceUser WiredTiger options: --wiredTigerCacheSizeGB arg Maximum amount of memory to allocate for cache; Defaults to 1/2 of physical RAM --zstdDefaultCompressionLevel arg (=6) Default compression level for zstandard compressor --wiredTigerJournalCompressor arg (=snappy) Use a compressor for log records [none|snappy|zlib|zstd] --wiredTigerDirectoryForIndexes Put indexes and data in different directories --wiredTigerCollectionBlockCompressor arg (=snappy) Block compression algorithm for collection data [none|snappy|zlib|zstd] --wiredTigerIndexPrefixCompression arg (=1) Use prefix compression on row-store leaf pages
MongoDB Server Configuration
MongoDB uses the configuration file options to control the behavior of a database. MongoDB server mongod
runs with the default configurations added in the config file.
On Windows, it is {install directory}\bin\mongod.cfg
file. On MacOS, it is /usr/local/etc/mongod.conf
or /opt/homebrew/etc/mongod.conf
. And, on Linux, it is /etc/mongod.conf
file.
MongoDB configuration files use the YAML format. The following is the mongod.cfg
file on Windows:
The following is the sample config file which you may like to use for your local mongod server.
systemLog: destination: file path: "/var/log/mongodb/mongod.log" logAppend: true storage: journal: enabled: true processManagement: fork: true net: bindIp: 127.0.0.1 port: 27017 setParameter: enableLocalhostAuthBypass: false
Visit mongod configuration options for more information.