Install and use MongoDB on Ubuntu

About MongoDB

MongoDB is a document-oriented NoSQL database used for high volume data storage. This is a database which came into light around the mid-2000s. It falls under the category of a NoSQL database.

To get very technical, a document is a set of key-value pairs. Documents have dynamic schema. Dynamic schema means that documents in the same collection do not need to have the same set of fields or structure, and common fields in a collection's documents may hold different types of data.

MongoDB Terminology

field : A name-value pair. this is a similar concept to the column of an RDBMS (Relational DB)

document : A group of fields are termed as a document. In RDBMS it's termed as a as row. MongoDB document follows JSON syntax but it is actually BSON syntax (BSON is an extended version of JSON implemented by MongoDB).

collection : A group of documents are called a collection in MongoDB. A collection is similar concept of table of an RDBMS.

database :A Physical Container for Collections. Each database gets its own set of files on the file system. A single MongoDB server typically has multiple databases

Advantages of MongoDB

  • Schema less − MongoDB is a document database in which one collection holds different documents. Number of fields, content and size of the document can differ from one document to another.
  • Structure of a single object is clear.
  • No complex joins.
  • Deep query-ability. MongoDB supports dynamic queries on documents using a document-based query language that's nearly as powerful as SQL.
  • Tuning.
  • Ease of scale-out − MongoDB is easy to scale.
  • Conversion/mapping of application objects to database objects not needed.
  • Uses internal memory for storing the (windowed) working set, enabling faster access of data.

Installation of MongoDB on Ubuntu

1. If gnupg is not installed in your server, please install it first, use the below command

sudo apt-get install gnupg

2. From the linux terminal, import the pubic key used by the package management system. MongoDB public GPG Key from https://www.mongodb.org/static/pgp/server-4.2.asc

wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add

3. Add a source list for the ubuntu version using below command

echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.2.list

4. Now update ur local package database

sudo apt-get update

5. Now, install the mongodb package

  • To Install latest version
sudo apt-get install -y mongodb-org
  • To install a specific version of mongodb
sudo apt-get install -y mongodb-org=4.2.5 \ 
mongodb-org-server=4.2.5 \ 
mongodb-org-shell=4.2.5 \ 
mongodb-org-mongos=4.2.5 \
mongodb-org-tools=4.2.5

6. Start the MongoDB daemon and enable it to start on boot

sudo systemctl start mongod
sudo systemctl enable mongod

7. To verify whether the installation has completed successfully we will connect to the MongoDB database server using the mongo tool and print the connection status:

mongo --eval 'db.runCommand({ connectionStatus: 1 })'

Output:-

MongoDB shell version v4.0.2
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 4.0.2
  {
    "authInfo" : {
    "authenticatedUsers" : [ ],
    "authenticatedUserRoles" : [ ]
  },
    "ok" : 1
  }

Configuring MongoDB

8. Go to /etc/mongod.conf and enable authentication

security:
authorization: enabled

9. Restart mongodb

sudo systemctl restart mongod

10. Now go to mongo shell by and use the admin database

mongo
use admin

11. Now create an admin user for mongodb database

db.createUser(
  {
    user: "mongoadmin", 
    pwd: "carhousepen334", 
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)

12. Now exit from mongo shell by typing

quit()

13. Now login using the admin user

mongo -u mongoAdmin -p --authenticationDatabase admin

References