MongoDB Overview
Let's learn about the basics of MongoDB and how we can use it.
We'll cover the following
As indicated by the “M” in MERN, we’ll use MongoDB as the back-end database for our application. MongoDB is a NoSQL database. Before we talk about what a NoSQL database is, let’s first talk about relational databases so we can provide a meaningful contrast.
Relational databases
We can think of relational databases as spreadsheets in which data is structured and each entry is a row in a table. SQL (or Structured Query Language) usually controls relational databases. Examples of popular relational databases are MySQL, SQL Server, and PostgreSQL.
NoSQL databases
In contrast, NoSQL databases are often called non-relational databases, with NoSQL meaning anything that isn’t SQL. It might seem like NoSQL is a protest over SQL, but it refers to a database that isn’t structured like a spreadsheet. In other words, they are less rigid than SQL databases.
MongoDB
MongoDB is a NoSQL database that stores information in the form of collections and documents. MongoDB stores one or more collections. A collection represents a single entity in our application. For example, in an e-commerce app, we need entities like categories, users, and products. Each of these entities will be a single collection in our database.
If we were to map similar concepts in relational databases and MongoDB:
-
A table in a relational database would compare to a collection in MongoDB.
-
Each row in a table in a relational database can be thought of as a document that is part of a collection in MongoDB.
-
The
$lookup
method in MongoDB carries out JOIN operations. -
Instead of foreign keys, MongoDB utilizes references.
In MongoDB, a collection contains documents. A document is a singular data object instance containing the various relevant field values. For example, a product document may contain title, description, and price fields. Each field is a key-value pair—for example, price: 26
and title: "Learning Node"
.
Documents look like JSON objects with various properties (though they are technically Binary JSON).
JSON is a text-based format for storing structured data based on JavaScript object syntax and Binary JSON (BSON) is a binary encoding of JSON documents.
DatabaseProducts collectionProduct document {price: 26,title: "Learning Node",description: "Top Notch Development book", expiry date: 27-3-2020}Product document...Users collectionUser document {username: "123xyz", contact:{phone: "123-456-7890", email: "xyz@example.com"}}User document...
Let’s take a look at an example of a collection-document tree in the code widget above. We can see that we have a variety of relationships. A user has a username
and contact
.
Within contact
, we have phone
and email
. The BSON format provides a wide variety of support
for data types such as strings, integers, etc.