m helps you download, use, and manage multiple versions of the MongoDB server
and command-line tools.
For an excellent deep dive about this project, check out the DeepWiki documentation.
To install binary packages, m requires a 64-bit OS which:
- is a Supported Platform for the version of MongoDB you are trying to install
- includes the
bashshell
Environments that should work include:
- Linux (RHEL/CentOS, Debian/Ubuntu, Amazon Linux)
- macOS 10.14 (Mojave) and later
- Windows 10 with Ubuntu on Windows
- Docker using a supported Linux distro
m is a bash script which can be installed & updated via npm for
convenience:
npm install -g m
# pnpm add -g m
# yarn global add mor installed by cloning the GitHub repo and running make install:
git clone https://github.com/aheckmann/m.git && cd m && make installor fetched via wget and copied to a location of your choice:
wget https://raw.githubusercontent.com/aheckmann/m/master/bin/m && chmod +x ./mTo install or activate a previously installed version, run m <version>. For
example:
$ m 7.0.14Afterwards, those binaries will become the default in your install path
(typically $HOME/.local/bin/; see Details below for more
information).
You can also specify a release series to download the latest available revision:
$ m 7.0
$ m 8.0List installed binaries:
$ m
7.0.14
* 8.0.6Use or download the latest official release:
$ m latestUse or download the stable official release:
$ m stableCheck what the latest available release is:
$ m --latest
$ m --latest 7.0Check what the current stable release is:
$ m --stable
$ m --stable 7.0Download an Enterprise release:
$ m 7.0-entSelect a MongoDB version without prompting for confirmation if a download is required:
$ yes | m 7.0Where possible m will try to download the distro-specific binaries for your
OS and version. If a binary appears to be unavailable, m will ask if you want
to try building from source.
Building MongoDB from source
requires you to preinstall all of the relevant dependencies & toolchain to build
the desired version of MongoDB. Installing those is outside the scope of what
m does.
Remove some previously installed versions:
$ m rm 6.0.13 7.0.5Multiple versions of MongoDB can be downloaded and targeted directly.
Ask m for the binary path for a specific version that has already been
downloaded:
$ m bin 7.0.6
/Users/bobbytables/.local/m/versions/7.0.6/binStart up mongod 6.0.13 regardless of the active version:
$ m use 6.0.13 --port 29000 --dbpath ./data/When installing or changing the active version you might want to run custom scripts:
$ m pre install /path/to/my/script
$ m post install /path/to/script
$ m pre change /path/to/my/script
$ m post change /path/to/scriptMultiple scripts may be added for any event. To add two pre change scripts:
$ m pre change /path/to/script1
$ m pre change /path/to/script2Scripts are executed in the order they were added.
List all pre change hooks:
$ m pre change
/path/to/script1
/path/to/script2List all post install hooks:
$ m post install
/path/to/scriptA
/path/to/scriptB
/path/to/scriptCTo remove a post install hook:
$ m post install rm /path/to/scriptBTo remove all post install hooks:
$ m post install rmThe Database Tools (mongodump, mongorestore, etc.) are released separately from
the server. You can use m to manage your MongoDB Database Tools version
independently of your MongoDB server and shell versions.
List available Database Tools versions:
$ m tools lsList installed Database Tools versions:
$ m tools installedUse or download the latest stable release of the Database Tools:
$ m tools stableUse or download a specific version of the Database Tools:
$ m tools 100.9.4The MongoDB Shell (mongosh) is released separately from the server. You can use
m to manage your MongoDB Shell version independently of your MongoDB server
and tools versions.
List available MongoDB Shell versions:
$ m mongosh lsList installed MongoDB Shell versions:
$ m mongosh installedUse or download the latest stable release of the MongoDB Shell:
$ m mongosh stableUse or download a specific version of the MongoDB Shell:
$ m mongosh 2.3.7Remove previously installed MongoDB Shell versions:
$ m mongosh rm 2.3.0 2.3.5Note: The m shell <version> [args...] command will first try to use the
installed mongosh version, and fall back to the legacy mongo shell if mongosh
is not installed.
Output from m --help:
Usage: m [options] [COMMAND] [config]
Commands:
m Output versions installed
m stable [config ...] Install or activate the latest stable MongoDB release
m latest [config ...] Install or activate the latest MongoDB release (including dev & RCs)
m X.Y Install or activate the latest patch release for MongoDB X.Y (eg. 7.0)
m <version> [config ...] Install and/or use MongoDB <version>
m <version> --legacy Install generic Linux version (does not include SSL)
m use <version> [args ...] Execute mongod <version> with [args ...]
m shard <version> [args ...] Execute mongos <version> with [args ...]
m shell <version> [args ...] Open a mongo shell <version> with [args ...]
m bin <version> Output bin path for <version>
m rm <version ...> Remove the given version(s)
m --stable Output the latest stable MongoDB version available
m --stable X.Y .. for release series X.Y (eg. 7.0)
m --latest Output the latest MongoDB version available (including dev & RCs)
m --latest X.Y .. for release series X.Y (eg. 7.0)
m ls Output the versions of MongoDB available
m installed [--json] Output installed versions available (optionally, in JSON format)
m src <version> Output the url for source used for the given <version>
(useful if installed from source)
m pre <event> [script] Declare one or list scripts to execute before <event>
(scripts must use absolute paths)
m post <event> [script] Declare one or list scripts to execute after <event>
(scripts must use absolute paths)
m pre <event> rm [script] Remove pre <event> script
m post <event> rm [script] Remove post <event> script
m tools stable Install or activate the latest stable Database Tools release
m tools X.Y.Z Install or activate the Database Tools X.Y.Z
m tools ls Output the versions of the Database Tools available
m tools rm <version ...> Remove the given Database Tools versions
m tools installed [--json] Output the installed versions of the Database Tools
m mongosh stable Install or activate the latest stable MongoDB Shell release
m mongosh X.Y.Z Install or activate the MongoDB Shell X.Y.Z
m mongosh ls Output the versions of the MongoDB Shell available
m mongosh rm <version ...> Remove the given MongoDB Shell versions
m mongosh installed [--json] Output the installed versions of the MongoDB Shell
Events:
change Occurs when switching MongoDB server versions
install Occurs when installing a previously uninstalled MongoDB server version
Options:
-V, --version Output current version of m
-h, --help Display help information
Aliases:
installed lls
shard sd, mongos
shell s, sh, mongo
list ls, available, avail
use as, mongod
which bin
By default, m downloads and manages binaries in the $HOME/.local/m directory. To
alter where m operates, export the M_PREFIX environment variable with your
preferred path prefix.
M_PREFIX=/some/other/path m stableYes tj, this is nearly identical to n. Huge thanks!
This software is not supported by MongoDB, Inc. under any of their commercial
support subscriptions or otherwise. Any usage of m is at your own risk. Bug
reports, feature suggestions, and questions can be posted in the
Issues section on GitHub.