Home » blog » MongoDB Explained: What It Is, How It Works & Key Features

MongoDB Explained: What It Is, How It Works & Key Features

MongoDB!
আপনি যখন কোনো website-এ account তৈরি করেন, online থেকে কোনো product order করেন, কিংবা কোনো social media platform-এ post করেন তখন আপনার এই information কোথাও না কোথাও store করতে হয়।

আর এই data সংরক্ষণ, manage এবং প্রয়োজনের সময় খুঁজে বের করার জন্যই প্রয়োজন হয় Database

বর্তমানে web development এবং software development-এ বিভিন্ন ধরনের database technology ব্যবহার করা হয়। এর মধ্যে MongoDB অন্যতম জনপ্রিয় NoSQL database।

MongoDB Explained
MongoDB Explained

বিশেষ করে JavaScript, Node.js এবং MERN Stack-এর সঙ্গে MongoDB ব্যাপকভাবে ব্যবহৃত হয়। কিন্তু MongoDB আসলে কী? এটি কীভাবে কাজ করে? SQL database থেকে এর পার্থক্য কোথায়? আর একজন developer-এর MongoDB শেখা কেন গুরুত্বপূর্ণ?

চলুন, একদম শুরু থেকে সহজভাবে MongoDB সম্পর্কে বিস্তারিত জেনে নেওয়া যাক।

MongoDB কী?

MongoDB হলো একটি open-source, document-oriented NoSQL database management system। Traditional relational database-এর মতো MongoDB data-কে table এবং row আকারে store করে না। বরং এখানে data document এবং collection-এর মাধ্যমে সংরক্ষণ করা হয়।

MongoDB-তে document সাধারণত BSON (Binary JSON) format-এ সংরক্ষিত হয়। এর structure অনেকটা JSON-এর মতো হওয়ায় JavaScript-based application-এর সঙ্গে MongoDB ব্যবহার করা বেশ সহজ।

একটি MongoDB document দেখতে এমন হতে পারে:

{
  "name": "Arif",
  "email": "arif@example.com",
  "age": 20,
  "skills": ["JavaScript", "React", "Node.js"]
}

এখানে একজন user-এর information একটি document হিসেবে সংরক্ষিত হয়েছে।

সহজভাবে বললে, MongoDB এমন একটি database যেখানে application-এর data flexible document আকারে store, manage এবং query করা যায়।

Why Is MongoDB Called a NoSQL Database?

MongoDB-কে NoSQL database বলা হয় কারণ এটি traditional relational database-এর table-based structure অনুসরণ করে না।

MySQL বা PostgreSQL-এর মতো relational database-এ সাধারণত data table, row এবং column-এর মাধ্যমে সংগঠিত থাকে।

অন্যদিকে MongoDB-এর structure অনেকটা এমন:

Database
   ↓
Collection
   ↓
Document
   ↓
Field

এই structure MongoDB বোঝার জন্য খুব গুরুত্বপূর্ণ।

Database

একটি MongoDB database-এর মধ্যে একাধিক collection থাকতে পারে।

ধরুন আপনি একটি e-commerce application তৈরি করছেন। আপনার database হতে পারে:

Ecommerce

এর মধ্যে থাকতে পারে:

users
products
orders
reviews

Collection

Collection অনেকটা SQL database-এর table-এর মতো।

যেমন:

users

এই collection-এর মধ্যে বিভিন্ন user-এর document থাকবে।

Document

Document হলো MongoDB-তে data storage-এর মূল unit।

উদাহরণ:

{
  "name": "Rahim",
  "email": "rahim@example.com",
  "country": "Bangladesh"
}

একজন user-এর এই সম্পূর্ণ information একটি document হতে পারে।

Field

Document-এর ভিতরের প্রতিটি property-কে field বলা হয়।

উপরের document-এ:

name
email
country

প্রতিটি একটি করে field।

How Does MongoDB Work?

MongoDB কীভাবে কাজ করে তা বোঝার সবচেয়ে সহজ উপায় হলো SQL database-এর সঙ্গে তুলনা করা।

ধরুন একটি SQL database-এ users table এমন:

IDNameEmailAge
1Rahimrahim@email.com21
2Karimkarim@email.com24

MongoDB-তে একই ধরনের data document হিসেবে থাকতে পারে:

{
  "_id": 1,
  "name": "Rahim",
  "email": "rahim@email.com",
  "age": 21
}

আরেকটি document:

{
  "_id": 2,
  "name": "Karim",
  "email": "karim@email.com",
  "age": 24
}

MongoDB-এর বড় বৈশিষ্ট্য হলো এর flexible data model

অর্থাৎ একই collection-এর document-এ প্রয়োজন অনুযায়ী ভিন্ন field থাকতে পারে।

তবে এর মানে এই নয় যে production application-এ কোনো structure বা data validation প্রয়োজন নেই। বড় application-এর ক্ষেত্রে ভালো data modeling এবং validation অত্যন্ত গুরুত্বপূর্ণ।

Key Features of MongoDB

MongoDB জনপ্রিয় হওয়ার পেছনে বেশ কিছু গুরুত্বপূর্ণ feature রয়েছে।

1. Document-Oriented Data Storage

MongoDB data-কে document হিসেবে store করে।

এই document-based structure modern application-এর data model-এর সঙ্গে অনেক সময় ভালোভাবে মিলে যায়।

বিশেষ করে JavaScript developer-দের কাছে এটি পরিচিত মনে হয়, কারণ document structure JSON-এর মতো।

2. Flexible Schema

MongoDB-এর অন্যতম পরিচিত feature হলো flexible schema।

ধরুন একটি document:

{
  "name": "Arif",
  "email": "arif@example.com"
}

আরেকটি document-এ অতিরিক্ত information থাকতে পারে:

{
  "name": "Sabbir",
  "email": "sabbir@example.com",
  "phone": "01700000000"
}

প্রতিটি document-এ একই field থাকা বাধ্যতামূলক নয়।

এটি বিশেষ করে এমন application-এর ক্ষেত্রে সুবিধাজনক যেখানে data structure সময়ের সঙ্গে পরিবর্তিত হতে পারে।

3. Scalability

একটি application বড় হলে database-এর উপরও বেশি load তৈরি হয়।

MongoDB horizontal scaling support করে। এর একটি গুরুত্বপূর্ণ feature হলো sharding, যার মাধ্যমে বড় dataset এবং workload একাধিক server-এর মধ্যে distribute করা যায়।

এ কারণে বড়-scale application-এর ক্ষেত্রে MongoDB একটি সম্ভাব্য database option হতে পারে।

4. Powerful Query System

MongoDB-তে বিভিন্ন ধরনের filtering এবং querying করা যায়।

উদাহরণস্বরূপ, নির্দিষ্ট name-এর user খুঁজতে:

db.users.find({
  name: "Rahim"
})

আবার ২০ বছরের বেশি বয়সী user খুঁজতে:

db.users.find({
  age: { $gt: 20 }
})

এভাবে MongoDB Query Language ব্যবহার করে প্রয়োজন অনুযায়ী data retrieve করা যায়।

5. Indexing

Database-এ অনেক বড় dataset থাকলে দ্রুত data খুঁজে বের করার জন্য indexing অত্যন্ত গুরুত্বপূর্ণ।

MongoDB-তে index তৈরি করা যায়:

db.users.createIndex({
  email: 1
})

এর মাধ্যমে email-based query দ্রুত করার সুযোগ তৈরি হতে পারে।

তবে প্রয়োজনের চেয়ে বেশি index তৈরি করা উচিত নয়। কারণ index maintain করতে অতিরিক্ত storage এবং write overhead তৈরি হতে পারে।

তাই বাস্তব project-এ আপনার application কী ধরনের query বেশি চালাচ্ছে, সেটি বুঝে index তৈরি করা উচিত।

What Is CRUD in MongoDB?

Database-এর সবচেয়ে basic এবং গুরুত্বপূর্ণ operation হলো CRUD

CRUD-এর অর্থ:

  • C — Create
  • R — Read
  • U — Update
  • D — Delete

প্রায় প্রতিটি application-এই কোনো না কোনোভাবে এই চার ধরনের operation প্রয়োজন হয়।

Create: Adding Data to MongoDB

নতুন document তৈরি করতে insertOne() ব্যবহার করা যায়।

db.users.insertOne({
  name: "Rahim",
  age: 21,
  email: "rahim@example.com"
})

একসঙ্গে একাধিক document insert করাও সম্ভব:

db.users.insertMany([
  {
    name: "Rahim",
    age: 21
  },
  {
    name: "Karim",
    age: 24
  }
])

Read: Finding Data

MongoDB থেকে data পড়ার জন্য find() ব্যবহার করা হয়।

সব user দেখতে:

db.users.find()

একটি নির্দিষ্ট document খুঁজতে:

db.users.findOne({
  email: "rahim@example.com"
})

Condition ব্যবহার করেও data search করা যায়:

db.users.find({
  age: { $gte: 18 }
})

এখানে $gte অর্থ greater than or equal to

Update: Changing Existing Data

কোনো document-এর information পরিবর্তন করতে updateOne() ব্যবহার করা যায়।

db.users.updateOne(
  { email: "rahim@example.com" },
  {
    $set: {
      age: 22
    }
  }
)

এখানে নির্দিষ্ট user-এর age update করা হচ্ছে।

Delete: Removing Data

কোনো document delete করতে:

db.users.deleteOne({
  email: "rahim@example.com"
})

Production application-এ delete operation করার আগে অবশ্যই যথাযথ validation এবং authorization নিশ্চিত করা উচিত।

What Is _id in MongoDB?

MongoDB-এর প্রতিটি document-এর একটি unique identifier থাকে, যাকে সাধারণত _id বলা হয়।

উদাহরণ:

{
  "_id": ObjectId("..."),
  "name": "Rahim",
  "email": "rahim@example.com"
}

আপনি নিজে _id provide না করলে MongoDB সাধারণত document তৈরি করার সময় একটি unique ObjectId তৈরি করে।

এই identifier ব্যবহার করে document আলাদাভাবে identify করা যায়।

What Is MongoDB Indexing?

ধরুন আপনার database-এ কয়েক মিলিয়ন user-এর data রয়েছে।

আপনি প্রতিদিন email দিয়ে user search করছেন।

যদি email field-এর জন্য প্রয়োজনীয় index না থাকে, database-কে অনেক বেশি document examine করতে হতে পারে।

MongoDB-তে index ব্যবহার করে নির্দিষ্ট query দ্রুত করার সুযোগ তৈরি করা যায়।

উদাহরণ:

db.users.createIndex({
  email: 1
})

তবে indexing-এর ক্ষেত্রে balance গুরুত্বপূর্ণ।

অতিরিক্ত index:

  • বেশি storage ব্যবহার করতে পারে
  • write operation-এর overhead বাড়াতে পারে
  • database maintenance আরও complex করতে পারে

তাই query pattern বুঝে index তৈরি করাই ভালো approach।

What Is MongoDB Aggregation?

MongoDB-এর অন্যতম powerful feature হলো Aggregation Framework

Aggregation ব্যবহার করে database-এর data filter, group, sort, transform এবং analyze করা যায়।

ধরুন আপনি জানতে চান কোন city থেকে কতজন user এসেছে।

একটি basic aggregation pipeline এমন হতে পারে:

db.users.aggregate([
  {
    $group: {
      _id: "$city",
      totalUsers: {
        $sum: 1
      }
    }
  }
])

Aggregation ব্যবহার করা যায়:

  • Data analysis
  • Reporting
  • Grouping
  • Filtering
  • Sorting
  • Calculations
  • Data transformation

ইত্যাদি কাজে।

MongoDB Data Modeling: Embedding vs Referencing

MongoDB শেখার সময় একটি গুরুত্বপূর্ণ বিষয় হলো related data কীভাবে store করবেন।

এক্ষেত্রে দুটি common approach হলো:

Embedding এবং Referencing

Embedding

Related data একই document-এর মধ্যে রাখা হলে তাকে embedding বলা হয়।

উদাহরণ:

{
  "name": "Rahim",
  "address": {
    "city": "Dhaka",
    "country": "Bangladesh"
  }
}

এখানে address information একই user document-এর মধ্যে রাখা হয়েছে।

Referencing

অন্য document-এর reference রাখাকে referencing বলা হয়।

উদাহরণ:

{
  "name": "Rahim",
  "addressId": "12345"
}

এখানে address আলাদা document-এ থাকতে পারে।

কোন approach ব্যবহার করবেন তা নির্ভর করে:

  • Data relationship
  • Query pattern
  • Data size
  • Update frequency
  • Application requirements

এর মতো বিষয়গুলোর উপর।

MongoDB Atlas কী?

নিজের computer-এ MongoDB install করে ব্যবহার করা যায়। আবার cloud environment-এও MongoDB ব্যবহার করা সম্ভব।

MongoDB Atlas হলো MongoDB-এর cloud-based database platform।

এর মাধ্যমে developer cloud-এ MongoDB database বা cluster তৈরি এবং manage করতে পারেন।

Beginner developer-দের জন্য এটি সুবিধাজনক, কারণ নিজের server manually configure না করেও MongoDB নিয়ে কাজ শুরু করা যায়।

MongoDB with Node.js

MongoDB JavaScript ecosystem-এর সঙ্গে খুব ভালোভাবে integrate করা যায়।

Node.js application-এ MongoDB ব্যবহার করার জন্য official MongoDB driver অথবা Mongoose-এর মতো ODM ব্যবহার করা যায়।

উদাহরণ হিসেবে Mongoose ব্যবহার করে connection তৈরি করা যেতে পারে:

const mongoose = require("mongoose");

mongoose.connect(process.env.MONGODB_URI);

তারপর একটি model তৈরি করা যায়:

const userSchema = new mongoose.Schema({
  name: String,
  email: String,
  age: Number
});

const User = mongoose.model("User", userSchema);

এরপর application code থেকে user data create, read, update এবং delete করা সম্ভব।

MongoDB vs MySQL

MongoDB এবং MySQL দুটোই জনপ্রিয় database technology, কিন্তু তাদের data model আলাদা।

বিষয়MongoDBMySQL
TypeNoSQLRelational
Data StructureDocumentTable
Main Data UnitDocumentRow
SchemaFlexibleStructured
Query LanguageMongoDB Query LanguageSQL
RelationshipsEmbedding/ReferencesForeign Keys
ScalingHorizontal scaling supportবিভিন্ন scaling approach
Data RepresentationBSON DocumentsRows & Columns

তবে MongoDB বনাম MySQL-এর ক্ষেত্রে কোনো একটি database সব project-এর জন্য “best” নয়।

Project-এর requirements বুঝে database নির্বাচন করা উচিত।

MongoDB vs PostgreSQL

PostgreSQL একটি powerful relational database, যেখানে strong relational modeling, SQL এবং transactional capabilities গুরুত্বপূর্ণ ভূমিকা পালন করে।

অন্যদিকে MongoDB document-oriented model ব্যবহার করে।

যদি আপনার application-এর data naturally document-based হয় এবং flexible document model প্রয়োজন হয়, MongoDB ভালো option হতে পারে।

অন্যদিকে complex relational data, structured relationships এবং advanced relational querying-এর ক্ষেত্রে PostgreSQL অনেক সময় বেশি উপযুক্ত হতে পারে।

তাই database selection সবসময় use case-এর উপর নির্ভর করা উচিত।

Advantages of MongoDB

MongoDB-এর বেশ কিছু উল্লেখযোগ্য সুবিধা রয়েছে।

Flexible Data Model

পরিবর্তনশীল data structure নিয়ে কাজ করা সহজ হতে পারে।

Developer Friendly

JSON-like document structure অনেক developer-এর কাছে সহজবোধ্য।

Scalable Architecture

Horizontal scaling এবং sharding-এর মতো feature রয়েছে।

Powerful Queries

Filtering, sorting এবং aggregation-এর মতো powerful querying options রয়েছে।

Cloud Support

MongoDB Atlas-এর মাধ্যমে cloud-based database ব্যবহার করা যায়।

JavaScript Ecosystem

Node.js এবং অন্যান্য JavaScript technologies-এর সঙ্গে সহজে ব্যবহার করা যায়।

Limitations of MongoDB

MongoDB-এর সুবিধা অনেক হলেও এটি প্রতিটি application-এর জন্য সেরা database নয়।

কিছু ক্ষেত্রে relational database বেশি উপযুক্ত হতে পারে।

যেমন:

  • Complex relational data
  • Strongly structured datasets
  • Relationship-heavy applications
  • Advanced relational queries
  • Highly normalized data model প্রয়োজন হলে

তাই শুধু popularity দেখে database নির্বাচন না করে application-এর architecture এবং requirements বিবেচনা করা উচিত।

When Should You Use MongoDB?

MongoDB আপনার project-এর জন্য ভালো option হতে পারে যদি:

  • আপনার data structure পরিবর্তনশীল হয়
  • Document-based data model আপনার application-এর সঙ্গে মানানসই হয়
  • দ্রুত development প্রয়োজন হয়
  • JavaScript বা Node.js ecosystem ব্যবহার করেন
  • Application scale করার পরিকল্পনা থাকে
  • Flexible schema প্রয়োজন হয়

অন্যদিকে, যদি application-এর data highly relational হয় এবং complex relationships ও relational integrity সবচেয়ে গুরুত্বপূর্ণ হয়, তাহলে PostgreSQL বা MySQL-এর মতো relational database বিবেচনা করা যেতে পারে।

How to Learn MongoDB as a Beginner?

আপনি যদি একদম শুরু থেকে MongoDB শিখতে চান, তাহলে একসঙ্গে সবকিছু শেখার চেষ্টা না করে step-by-step এগোনো ভালো।

Step 1: Learn Database Fundamentals

প্রথমে বুঝুন:

  • Database কী?
  • Database কেন প্রয়োজন?
  • SQL কী?
  • NoSQL কী?
  • SQL ও NoSQL-এর পার্থক্য কী?
  • CRUD কী?
  • Index কী?
  • Relationship কী?

Step 2: Learn MongoDB Basics

এরপর MongoDB-এর core concepts শিখুন:

  • Database
  • Collection
  • Document
  • Field
  • BSON
  • ObjectId

Step 3: Practice CRUD

এরপর নিয়মিত practice করুন:

insert
find
update
delete

এই চারটি operation ভালোভাবে বুঝে গেলে MongoDB নিয়ে কাজ করার foundation তৈরি হবে।

Step 4: Learn Query Operators

এরপর query operators শেখা শুরু করুন:

$gt
$gte
$lt
$lte
$in
$and
$or

এগুলো ব্যবহার করে complex filtering practice করুন।

Step 5: Learn Indexing

আপনার query কীভাবে দ্রুত করা যায় এবং index কীভাবে কাজ করে তা শিখুন।

Step 6: Learn Aggregation

এরপর aggregation pipeline শিখুন।

বিশেষ করে:

$match
$group
$sort
$project
$lookup

এর মতো stages নিয়ে practice করতে পারেন।

Step 7: Connect MongoDB with Node.js

সবশেষে Node.js বা Next.js application-এর সঙ্গে MongoDB connect করে বাস্তব project তৈরি করুন।

এখানেই আপনার শেখা concepts বাস্তবে প্রয়োগ করার সুযোগ পাবেন।

MongoDB শেখার জন্য কী Project বানাবেন?

শুধু tutorial দেখে MongoDB শেখার চেয়ে project তৈরি করে শেখা অনেক বেশি কার্যকর।

আপনি শুরু করতে পারেন কয়েকটি ছোট project দিয়ে।

1. Blog Application

একটি blog application-এ রাখতে পারেন:

  • Users
  • Posts
  • Comments
  • Categories
  • Tags

এখানে CRUD, relationships এবং indexing practice করা যাবে।

2. E-commerce Backend

একটি e-commerce backend-এ থাকতে পারে:

  • Products
  • Users
  • Orders
  • Reviews
  • Cart

এ ধরনের project MongoDB-এর practical use বোঝার জন্য ভালো।

3. Student Management System

এখানে রাখতে পারেন:

  • Student
  • Course
  • Enrollment
  • Result
  • Instructor

এতে বিভিন্ন data relationship নিয়ে কাজ করার সুযোগ পাবেন।

4. Job Portal

একটি basic job portal-এ থাকতে পারে:

  • Users
  • Companies
  • Jobs
  • Applications

এখানে filtering, searching, indexing এবং aggregation practice করা যাবে।

Is MongoDB Important for Web Developers?

আপনি যদি MERN Stack Development শিখতে চান, তাহলে MongoDB একটি গুরুত্বপূর্ণ technology।

MERN-এর চারটি অংশ হলো:

M — MongoDB
E — Express.js
R — React
N — Node.js

এই technology stack ব্যবহার করে একজন developer frontend থেকে backend এবং database পর্যন্ত complete web application তৈরি করতে পারেন।

তবে শুধু MongoDB জানলেই একজন full-stack developer হওয়া যায় না।

Database-এর পাশাপাশি আপনাকে শিখতে হবে:

  • API development
  • Authentication
  • Authorization
  • Security
  • Backend development
  • Deployment
  • Performance optimization
  • Basic system design

অর্থাৎ MongoDB হবে আপনার full-stack development journey-এর একটি গুরুত্বপূর্ণ অংশ।

MongoDB Best Practices

MongoDB নিয়ে কাজ করার সময় শুরু থেকেই কিছু ভালো practice অনুসরণ করা উচিত।

Design Around Your Queries

প্রথমে ভাবুন application কীভাবে data ব্যবহার করবে। তারপর সেই অনুযায়ী data model তৈরি করুন।

Avoid Unnecessary Indexes

প্রতিটি field-এর উপর index তৈরি করা উচিত নয়। প্রয়োজনীয় query-এর জন্য index ব্যবহার করুন।

Validate User Input

Client থেকে আসা data সরাসরি database-এ store না করে validation করা উচিত।

Protect Database Credentials

Database connection string এবং credentials কখনো public code repository-তে রাখা উচিত নয়।

Environment variables ব্যবহার করা ভালো practice।

Monitor Performance

Application বড় হওয়ার সঙ্গে সঙ্গে slow queries, indexes এবং database performance monitor করা গুরুত্বপূর্ণ।

Final Thoughts

MongoDB হলো একটি powerful এবং flexible NoSQL document database, যা modern web application development-এ ব্যাপকভাবে ব্যবহৃত হয়।

এর document-oriented structure, flexible data model, powerful query system, indexing, aggregation এবং scalability-এর কারণে অনেক ধরনের application-এর জন্য MongoDB একটি কার্যকর database option হতে পারে।

বিশেষ করে আপনি যদি JavaScript, Node.js, React বা MERN Stack নিয়ে কাজ করতে চান, তাহলে MongoDB শেখা আপনার development skillset-কে আরও শক্তিশালী করতে পারে।

তবে MongoDB শেখার সময় শুধু command বা syntax মুখস্থ করার দিকে মনোযোগ না দিয়ে database-এর fundamentals বোঝার চেষ্টা করুন।

কারণ একজন ভালো developer শুধু জানেন না কীভাবে database ব্যবহার করতে হয় তিনি এটাও বোঝেন কখন কোন database ব্যবহার করা উচিত, কীভাবে data structure করতে হয় এবং কীভাবে application-এর প্রয়োজন অনুযায়ী database optimize করতে হয়।

All Tech Update

Technology এর সকল আপডেট সবার আগে বিস্তারিত পড়ুন –

Scroll to Top