Before reading this article, I highly recommend reading the following previous installments in the series:
Write operations are any type of operation that creates and modifies data. A relational database contains 3 types of write operations. They are Insert, Update and Delete. MongoDB has a number of write operations (in other words Insert, Update, save, Delete, upsert ) that are insert, update and remove data. Each write operation targets a single collection. Each write operation is atomic at the document level.
To remove, save, update and insert operations, we can specify the criteria, or conditions, that identify the documents to update or remove.
This article explains the insert method.
Insert
The Insert method in MongoDB is similar to the “Insert Into” command of Relational Databases. The Insert method inserts a new document into a collection. We can insert single, multiple and embedded documents into collections depending on our preferences or requirements.
Syntax: db.Collection_Name.insert()
Insert Single Document
The preceding diagram shows a basic method to insert a single document into a collection. Now we execute some queries in the MongoDB shell.
In the preceding example, we insert 3 documents, but only a single document at a time is in the Employee collection.
Insert Multiple Documents
In the previous example, we saw how to insert a single document into a collection. This approach will take time if we have bulk data to insert. For such types, MongoDB provides a method for multiple insertions. Using this method, we can insert multiple documents in a single insert command.
Let's see an example:
In the above example, we inserted two documents using a single insert command.
Insert Embedded Document
A document that contains another document as it's key-value pair is known as an Embedded Document. A MongoDB database has a flexible schema, so there is no need to have the same set of fields or structures and common fields in a collection document. The following image provides a basic idea of an embedded document structure.
Let's see an example:
Insert_Behaviour
When we add a new document in any collection without specifying the _id field, then MongoDB adds an _id field implicitly. This _Id field uniquely identifies each document. If we provide the _id field explicitly then MongoDB first checks the value of the _Id field. If this _id already exists, then MongoDB will throw an exception.
Let's see an example:
In the above example, we added two documents. In the first document, we didn't specify the _id field, so MongoDB internally adds the _id to the document. In the second document, we provided an external _id field.
Take another example:
In the preceding example, we tried to insert a new document into a collection. But the value of the _id field already existed, so the MongoDB database throws the error that the ObjectId already exists.
Embedded Document as Alternate of Joins
In a relational database, we use Join to retrieve data from two or more tables. But in MongoDB we don't need a Join, we can use the concept of an embedded document.
Let's see an example of Social Networking Sites that have the following requirements:
- A user can publish any number of posts.
- Every post contains a total number of likes.
- Every post has comments given by other users along with their userId, message, DateTime and like option.
- Each post can have zero or more comments.
- A user can comment zero or more times for a post
For such type of scenario, in a Relational Database, we require two tables and some relationship between the tables.
If you want to retrieve information about a post then we must do Join operations as in the following:
But in MongoDB, we can do that using an Embedded Document. We are not required to maintain a relationship and do any Join operations, as shown in the following:
If we want to retrieve information about a post, then we can use the following query:
We can see that if we want to insert and retrieve the same information, then we require two tables and a Join operation in a relational database. We can do this using a single Collection in MongoDB that doesn't require Join operations.
In my next article, I will explain other methods for write operations.