MongoDB is a free and open-source NoSQL document database used commonly in modern web applications.
MongoDB is one of several database types to arise in the mid-2000s under the NoSQL banner. Instead of using tables and rows as in relational databases, MongoDB is built on an architecture of collections and documents. Documents comprise sets of key-value pairs and are the basic unit of data in MongoDB. Collections contain sets of documents and function as the equivalent of relational database tables.
Like other NoSQL databases, MongoDB supports dynamic schema design, allowing the documents in a collection to have different fields and structures. The database uses a document storage and data interchange format called BSON, which provides a binary representation of JSON-like documents. Automatic sharding enables data in a collection to be distributed across multiple systems for horizontal scalability as data volumes increase.
This blog will help you set up MongoDB on your server for a production application environment.
To follow this blog, you will need:
- One Ubuntu 16.04 server set up by following this initial server setup, including a sudo non-root user.
Adding the MongoDB Repository
MongoDB is already included in Ubuntu package repositories, but the official MongoDB repository provides most up-to-date version and is the recommended way of installing the software. In this step, we will add this official repository to our server.
Ubuntu ensures the authenticity of software packages by verifying that they are signed with GPG keys, so we first have to import they key for the official MongoDB repository.
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA31292
After successfully importing the key, you will see:
gpg: Total number processed: 1 gpg: imported: 1 (RSA: 1)
Next, we have to add the MongoDB repository details so apt will know where to download the packages from.
Issue the following command to create a list file for MongoDB.
$ echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
After adding the repository details, we need to update the packages list.
$ sudo apt-get update
Installing and Verifying MongoDB
Now we can install the MongoDB package itself.
$ sudo apt-get install -y mongodb-org
This command will install several packages containing latest stable version of MongoDB along with helpful management tools for the MongoDB server.
Next, start MongoDB with systemctl.
$ sudo systemctl start mongod
You can also use systemctl to check that the service has started properly.
$ sudo systemctl status mongod
$ mongo mongodb.service - High-performance, schema-free document-oriented database Loaded: loaded (/etc/systemd/system/mongodb.service; enabled; vendor preset: enabled) Main PID: 4093 (mongod) Tasks: 16 (limit: 512) Memory: 47.1M CPU: 1.224s CGroup: /system.slice/mongodb.service └─4093 /usr/bin/mongod --quiet --config /etc/mongod.conf
The last step is to enable automatically starting MongoDB when the system starts.
$ sudo systemctl enable mongod
The MongoDB server is now configured and running, and you can manage the MongoDB service using the systemctl command (e.g. sudo systemctl stop mongod, sudo systemctl start mongod).