How MongoDB works in MEAN Stack?


MEAN stack is a popular technology stack for developing web applications using JavaScript. MEAN stands for MongoDB, Express, Angular, and Node, the four key technologies that make up the stack. In this blog, we will focus on how MongoDB works in the MEAN stack Development and why it is a great choice for web development.

What is MongoDB?

MongoDB is a document database that stores data in JSON-like format. Unlike relational databases, MongoDB does not have tables, rows, and columns. Instead, it has collections, documents, and fields. A collection is a group of documents that share a common schema or structure. A document is a record of data that can have any number of fields. A field is a key-value pair that represents an attribute of the document.

MongoDB is designed to be fast, scalable, and flexible. It supports dynamic schemas, meaning that you can change the structure of your documents without affecting the existing data. It also supports various data types, such as strings, numbers, arrays, objects, dates, and binary data. MongoDB can handle large amounts of data and scale horizontally by distributing the data across multiple servers or shards.
How MongoDB works with Express and Node?

Express and Node are the server-side components of MEAN stack. Express is a web framework for Node that provides features such as routing, middleware, and template engines. Node is a web server that can run JavaScript code outside the browser and handle many concurrent requests.


To use MongoDB with Express and Node, you need to install the MongoDB driver for Node using npm (Node Package Manager). The driver allows you to connect to MongoDB database, create schemas and models, perform CRUD (Create, Read, Update, Delete) operations, and use various query options and aggregation methods.


Here is an example of how to connect to MongoDB database using the driver:


// Require the MongoDB driver

const MongoClient = require('mongodb').MongoClient;


// Define the connection URL

const url = 'mongodb://localhost:27017';


// Define the database name

const dbName = 'mean-blog';


// Create a new MongoClient

const client = new MongoClient(url);


// Use connect method to connect to the server

client.connect(function(err) {

if (err) {

console.error(err);

return;

}

console.log('Connected successfully to server');


// Get the database object

const db = client.db(dbName);


// Perform some database operations


// Close the connection

client.close();

});


Here is an example of how to create a schema and a model for a blog post using Mongoose, an Object Data Modeling (ODM) library for MongoDB:


// Require Mongoose

const mongoose = require('mongoose');


// Define the schema for a blog post

const postSchema = new mongoose.Schema({

title: String,

content: String,

author: String,

date: Date

});


// Create a model for a blog post

const Post = mongoose.model('Post', postSchema);


Here is an example of how to perform CRUD operations using the model:


// Create a new blog post

const newPost = new Post({

title: 'How MongoDB works in MEAN Stack?',

content: 'MEAN stack is a popular technology stack for developing web applications using JavaScript...',

author: 'Instaily',

date: new Date()

});


// Save the blog post to the database

newPost.save(function(err) {

if (err) {

console.error(err);

return;

}

console.log('Blog post saved successfully');

});


// Find all blog posts

Post.find(function(err, posts) {

if (err) {

console.error(err);

return;

}

console.log('Found', posts.length, 'blog posts');

});


// Find one blog post by title

Post.findOne({title: 'How MongoDB works in MEAN Stack?'}, function(err, post) {

if (err) {

console.error(err);

return;

}

console.log('Found blog post:', post);

});


// Update one blog post by title

Post.updateOne({title: 'How MongoDB works in MEAN Stack?'}, {content: 'MEAN stack is an awesome technology stack for developing web applications using JavaScript...'}, function(err) {

if (err) {

console.error(err);

return;

}

console.log('Blog post updated successfully');

});


// Delete one blog post by title

Post.deleteOne({title: 'How MongoDB works in MEAN Stack?'}, function(err) {

if (err) {

console.error(err);

return;

}

console.log('Blog post deleted successfully');

});
How does MongoDB work with Angular?

Angular is the client-side component of MEAN stack. Angular is a JavaScript framework that allows you to create dynamic, interactive web experiences using components, directives, services, and modules. Angular uses TypeScript, a superset of JavaScript that adds features such as types, classes, and decorators.


To use MongoDB with Angular, you need to communicate with the Express and Node server using HTTP requests. You can use the built-in HttpClient service or a third-party library such as Axios to make HTTP requests from your Angular components or services. You can also use RxJS, a library for reactive programming, to handle asynchronous data streams.


Here is an example of how to make a GET request to fetch all blog posts from the server using HttpClient:


// Import HttpClient

import { HttpClient } from '@angular/common/http';




// Define the component class

export class BlogComponent implements OnInit {

// Define the posts array

posts: any[];




// Inject HttpClient in the constructor

constructor(private http: HttpClient) {}




// Define the ngOnInit method

ngOnInit() {

// Make a GET request to the server

this.http.get('http://localhost:3000/posts')

.subscribe(data => {

// Assign the data to the posts array

this.posts = data;

}, error => {

// Handle the error

console.error(error);

});

}

}


Here is an example of how to make a POST request to create a new blog post on the server using Axios:


// Import Axios

import axios from 'axios';


// Define the component class

export class BlogComponent implements OnInit {

// Define the title and content properties

title: string;

content: string;


// Define the constructor

constructor() {}


// Define the createPost method

createPost() {

// Create a new blog post object

const newPost = {

title: this.title,

content: this.content,

author: 'Instaily',

date: new Date()

};


// Make a POST request to the server

axios.post('http://localhost:3000/posts', newPost)

.then(response => {

// Handle the response

console.log(response.data);

})

.catch(error => {

// Handle the error

console.error(error);

});

}

}
Why is MongoDB a great choice for MEAN stack?

MongoDB is a great choice for MEAN stack because it offers many benefits, such as:


Seamless integration: MongoDB works well with Express, Node, and Angular because they all use JavaScript and JSON. You can easily pass data between the layers of the stack without any conversion or transformation.


Schema flexibility: MongoDB allows you to change the structure of your documents without affecting the existing data. You can add or remove fields, nest objects, or use arrays as you need. This gives you more freedom and agility in developing your web applications.


Scalability: MongoDB can handle large amounts of data and scale horizontally by distributing the data across multiple servers or shards. You can also use replica sets to provide high availability and fault tolerance.


Performance: MongoDB is fast and efficient in storing and retrieving data. It uses indexes, caching, and compression to optimize performance. It also supports various query options and aggregation methods to perform complex data analysis.


Conclusion

In this blog, we have learned how MongoDB works in MEAN stack and why it is a great choice for web development. We have seen how to use MongoDB with Express and Node to perform CRUD operations on the server side, and how to use MongoDB with Angular to display data on the client side. We have also seen some of the benefits of MongoDB, such as seamless integration, schema flexibility, scalability, and performance.



If you want to learn more about MEAN stack, you can check out these resources:


What are the Responsibilities of a MEAN Stack Developer?

A Comparison of MEAN Stack and Other Web Development Stacks

What is a MEAN Stack Developer?

Comments

Popular posts from this blog

What is a MEAN Stack Developer?

How to Integrate Python with HTML and CSS - A Step by Step Guide

A Comparison of MEAN Stack and Other Web Development Stacks