وقتی پروژه شما نیاز به انعطاف بیشتر داره یا حجم داده بزرگه، شاید MongoDB انتخاب بهتری از MySQL باشه. تو این مقاله MongoDB رو معرفی میکنم.

NoSQL چیه؟

Not Only SQL. دیتابیس‌هایی که برخلاف SQL کلاسیک، Table و Row ندارن. انواع:
- Document (MongoDB)
- Key-Value (Redis)
- Column-family (Cassandra)
- Graph (Neo4j)

MongoDB چیه؟

Document Database که داده رو به شکل JSON (BSON در اصل) ذخیره میکنه. Schema-less و انعطاف‌پذیر.

ساختار

Database: مثل MySQL
Collection: مثل Table
Document: مثل Row، ولی JSON

مزایا

Schema Flexibility: هر Document میتونه ساختار متفاوت داشته باشه.
Horizontal Scaling: Sharding داخلی. حجم زیاد قابل مدیریت.
JSON Native: برای JavaScript و Node.js عالی.
Fast Development: Schema Migration نداره.
Aggregation Pipeline: قوی و قابل انعطاف.
Replication: Replica Set پیش‌فرض.

معایب

Transaction محدود: تا ورژن 4.0 نبود. الان هست ولی محدود.
JOIN ندارد: Aggregation Lookup هست ولی کند.
حجم بیشتر: Field names در هر Document تکرار میشن.
Consistency: Eventual Consistency، نه Strong.
Learning Curve: اگه از SQL میاید، فکر متفاوت.

کاربردهای MongoDB

Content Management: Blog، CMS با ساختار متغیر.
IoT: Sensors با فرمت‌های مختلف.
Real-time Analytics: حجم بالای داده.
Mobile Apps: Backend سریع.
Product Catalog: محصولات با خصوصیات متغیر.
User Profiles: پروفایل با فیلدهای دلخواه.

نصب MongoDB

Ubuntu: apt install mongodb-org
Docker: docker run -d --name mongo -p 27017:27017 mongo

CRUD Operations

Insert: db.users.insertOne({name: mohammad, age: 30});
Read: db.users.find({age: {gt: 25}});
Update: db.users.updateOne({name: mohammad}, {set: {age: 31}});
Delete: db.users.deleteOne({name: mohammad});

Indexing

db.users.createIndex({age: 1});
db.users.createIndex({name: text});

Aggregation

db.orders.aggregate([
{match: {status: complete}},
{group: {id: customer, total: {sum: amount}}},
{sort: {total: -1}}
]);

Replica Set

یه Primary + چند Secondary. Automatic failover.

Sharding

داده رو بین چند سرور تقسیم میکنه. مقیاس‌پذیری بی‌نهایت.

MongoDB Atlas

Cloud Managed از MongoDB. رایگان تا 512MB.

Framework Support

Node.js: mongoose. Python: pymongo. PHP: mongodb driver. Java: mongodb-driver.

MongoDB vs MySQL

Schema: MongoDB انعطاف، MySQL سختگیر.
JOIN: MySQL قوی، MongoDB ضعیف.
Scale: MongoDB افقی، MySQL عمودی.
Transaction: MySQL قوی، MongoDB محدود.
Best for: MongoDB: JSON data، big data. MySQL: Relational data، Transactional.

GUI Tools

MongoDB Compass: رسمی، رایگان.
Studio 3T: حرفه‌ای، پولی.
Robo 3T: ساده.

سباهاست پشتیبانی

سباهاست VPS با MongoDB نصب شده ارائه میده.

معروف‌ترین کاربرها

eBay، Adobe، Google، Facebook.

Cost

Community Edition رایگان. Enterprise پولی.

جمع‌بندی

MongoDB انتخاب عالی برای پروژه‌های مدرن با JSON و حجم بالا. اگه نیاز به Transaction قوی نیست، MongoDB سریع‌تر پیشرفت میده.