Skip to main content

/docs/images/banner.jpg

MONGODB

Reference links

https://www.mongodb.com/resources/products/fundamentals/crud https://www.geeksforgeeks.org/mongodb-crud-operations/ https://www.mongodb.com/docs/manual/tutorial/query-documents/ https://www.mongodb.com/docs/manual/aggregation/

CRUD Operations in MongoDB

1. Create Operations

Create operations are used to insert new documents into a collection. If the specified collection does not exist, MongoDB will create it automatically.

Methods:

  • insertOne(): Inserts a single document into a collection.
  • insertMany(): Inserts multiple documents into a collection.

Example:

// Insert a single document
db.students.insertOne({
name: "John Doe",
age: 21,
major: "Computer Science",
});

// Insert multiple documents
db.students.insertMany([
{ name: "Jane Smith", age: 22, major: "Mathematics" },
{ name: "Sam Brown", age: 20, major: "Physics" },
]);

2. Read Operations

Read operations are used to retrieve documents from a collection. You can specify query filters to narrow down the results.

Methods:

  • find(): Retrieves documents from a collection. You can use filters to specify which documents to return.
  • findOne(): Retrieves a single document that matches the specified criteria.

Example:

// Retrieve all documents
db.students.find().pretty();

// Retrieve documents with a specific condition
db.students.find({ major: "Computer Science" }).pretty();

// Retrieve a single document
db.students.findOne({ name: "Jane Smith" });

// Retrieve students who are majoring in Computer Science and are older than 20
db.students
.find({ $and: [{ major: "Computer Science" }, { age: { $gt: 20 } }] })
.pretty();

// Retrieve students who are majoring in Mathematics and have an age of 22
db.students.find({ major: "Mathematics", age: 22 }).pretty();

3. Update Operations

Update operations modify existing documents in a collection. You can update one or multiple documents based on specified criteria.

Methods:

  • updateOne(): Updates a single document that matches the specified criteria.
  • updateMany(): Updates multiple documents that match the specified criteria.
  • replaceOne(): Replaces a single document with a new document.

Example:

// Update a single document
db.students.updateOne({ name: "John Doe" }, { $set: { age: 22 } });

// Update multiple documents
db.students.updateMany(
{ major: "Mathematics" },
{ $set: { major: "Applied Mathematics" } }
);

// Replace a document
db.students.replaceOne(
{ name: "Sam Brown" },
{ name: "Samuel Brown", age: 21, major: "Physics" }
);

4. Delete Operations

Delete operations are used to remove documents from a collection. You can delete one or multiple documents based on specified criteria.

Methods:

  • deleteOne(): Deletes a single document that matches the specified criteria.
  • deleteMany(): Deletes multiple documents that match the specified criteria.

Example:

// Delete a single document
db.students.deleteOne({ name: "John Doe" });

// Delete multiple documents
db.students.deleteMany({ major: "Physics" });

Aggregation in MongoDB

Aggregation in MongoDB is a powerful feature that allows users to process and analyze data from multiple documents in a collection. It enables complex data transformations and computations, making it essential for generating reports, analyzing trends, and summarizing data.

What is Aggregation?

Aggregation operations in MongoDB group values from multiple documents together and perform various computations on the grouped data to return a single result. This is similar to SQL's GROUP BY clause, where data is grouped and aggregated.

Key Features of Aggregation:

  • Data Transformation: Aggregation allows for the transformation of data as it passes through different stages.
  • Multiple Stages: Aggregation pipelines can consist of multiple stages, each performing a specific operation on the data.
  • Flexibility: Aggregation can handle complex queries and calculations, providing flexibility in data analysis.

Aggregation Methods

MongoDB provides two primary methods for performing aggregation:

1. Aggregation Pipeline

The aggregation pipeline is the preferred method for performing aggregations in MongoDB. It consists of a sequence of stages that process documents and transform the data.

Basic Structure:
db.collection.aggregate([
{ $stage1: { /* stage1 operations */ } },
{ $stage2: { /* stage2 operations */ } },
...
])
Example:

To calculate the total number of tutorials written by each user in a collection:

db.tutorials.aggregate([
{ $group: { _id: "$by_user", num_tutorial: { $sum: 1 } } },
]);

This query will output a result similar to the following table:

_idnum_tutorial
"user1"5
"user2"3
"user3"7

The $group stage groups the documents by the by_user field and counts the number of documents for each user using the $sum operator with a constant value of 1.

2. Single-Purpose Aggregation Methods

These methods provide simple access to common aggregation operations without the complexity of an aggregation pipeline. Examples include count(), distinct(), and estimatedDocumentCount().

Example:

To count the total number of documents in a collection:

db.collection.countDocuments();

This query will return the total number of documents in the specified collection.

Common Aggregation Operators

MongoDB supports various operators that can be used within aggregation stages:

  • $sum: Calculates the total sum of a specified field.
  • $avg: Computes the average value of a specified field.
  • $min: Finds the minimum value of a specified field.
  • $max: Finds the maximum value of a specified field.
  • $count: Counts the number of documents in a group.
  • $push: Adds values to an array in the resulting document.
Example of Using Multiple Operators:

To calculate the average likes per user and total likes:

db.tutorials.aggregate([
{
$group: {
_id: "$by_user",
total_likes: { $sum: "$likes" },
average_likes: { $avg: "$likes" },
},
},
]);

This query will output a result similar to the following table:

_idtotal_likesaverage_likes
"user1"25050.0
"user2"15050.0
"user3"35050.0

The $group stage groups the documents by the by_user field, calculates the total likes using the $sum operator, and computes the average likes using the $avg operator.