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 <setname>[/<optionalseedhostlist
>]
--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
datadb which is C:datadb 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.