MongoDB: مقدمة إلى MongoDB
تُعد MongoDB قاعدة البيانات الوثائقية الأكثر انتشارًا في العالم — فهي تجعل عملية نمذجة البيانات المرنة وعمليات الكتابة عالية الإنتاجية بسيطة وفعالة.
صُمم هذا الدليل التعليمي لمطوري البرمجيات الخلفية الذين يتمتعون بفهم أساسي للغة جافا سكريبت وNode.js. ويبدأ الدليل بأساسيات NoSQL، ثم يرشدك خطوة بخطوة إلى كيفية بناء تطبيقات جاهزة للاستخدام في بيئة الإنتاج باستخدام MongoDB وMongoose.
1. ما ستتعلمه
- خلفية قواعد بيانات NoSQL والعائلات الأربع الرئيسية
- تاريخ MongoDB وفلسفة تصميمها وتطور إصداراتها
- الاختلافات الجوهرية بين نموذج الوثيقة والنموذج العلائقي
- الاختلافات بين تنسيق البيانات BSON وتنسيق JSON
- خدمة MongoDB Atlas السحابية مقابل النشر المحلي
- حالات استخدام MongoDB في ثلاثة أسواق مستهدفة رئيسية (الشرق الأوسط، البرازيل، واليابان)
2. قصة حقيقية لمهندس برمجيات الخلفية
(1) المشكلة: قواعد البيانات العلائقية غير قادرة على مواكبة التطورات
أليس هي مهندسة برمجيات خلفية في شركة للتجارة الإلكترونية عبر الحدود. وقد تلقت مؤخرًا طلبًا عاجلاً:
"يحتوي جدولنا
productsبالفعل على مليوني سجل. ويتعين على فريق العمليات تحميل 50,000 وحدة تخزين جديدة (SKU) يوميًا، وتحتوي كل وحدة تخزين على 10–15 سمة ديناميكية (مثل اللون، والحجم، وسعة البطارية، ومعدل تحديث الشاشة). ويتطلب تغيير بنية الجدول قفل قاعدة البيانات لمدة ساعتين، وقد بدأ فريق الأعمال بالفعل في التعبير عن استيائه من هذا الوضع."
المشاكل التي تواجهها:
| المشكلة | التأثير |
|---|---|
| هيكل الجدول الثابت | في كل مرة تُضاف فيها سمة جديدة، يلزم استخدام عبارة ALTER TABLE، مما يؤثر على خدمات الإنتاج |
| تضخم الحقول ذات القيمة NULL | 90% من الحقول قيمتها NULL، مما يؤدي إلى إهدار مساحة التخزين |
| ضعف أداء عمليات الربط (JOIN) | تستغرق استعلامات الربط بين الجداول المتعددة 5 ثوانٍ أو أكثر للرد عند معالجة مئات الملايين من السجلات |
| معدل نقل البيانات المنخفض عند الكتابة | عبء تشغيل مرتفع للمعاملات العلائقية؛ تصبح عمليات الإدراج بطيئة في ظل التزامن العالي |
(2) حل MongoDB
إعادة كتابة نظام SKU باستخدام نموذج المستندات، بحيث يكون كل منتج مستندًا منفصلاً شبيهًا بـ JSON.
// MongoDB Document Structure — One document represents an entire product record.
{
_id: ObjectId("..."),
sku: "PHONE-X-256-BLK",
title: "Smartphone X 256GB Black",
price: 599.99,
category: "Electronics",
attributes: { // Nested Documents,No need to JOIN
color: "Black",
storage: "256GB",
screen: "6.5 inch OLED",
battery: "4500mAh",
refresh_rate: "120Hz"
},
tags: ["5g", "amoled", "fast-charging"], // Array Fields
stock: { warehouse_1: 50, warehouse_2: 30 },
created_at: ISODate("2026-07-01T10:00:00Z")
}
(3) الإيرادات
| البعد | قواعد البيانات العلائقية (MySQL) | MongoDB |
|---|---|---|
| إضافة حقل | ALTER TABLE (قفل الجدول) | إدراج مستند جديد مباشرةً |
| تخزين الحقول الفارغة | يشغل مساحة | لا يشغل مساحة |
| البيانات غير المتجانسة | يتطلب عمودًا بتنسيق JSON أو جدول EAV | دعم أصلي |
| التوسع الأفقي | معقد (تقسيم قاعدة البيانات والجداول) | تقسيم مدمج |
| معدل نقل البيانات للكتابة | 5,000 عملية/ثانية | 50,000+ عملية/ثانية |
3. ظهور قواعد بيانات NoSQL
نظرة عامة على المفهوم: ظهرت قواعد بيانات NoSQL (Not Only SQL) في أواخر العقد الأول من القرن الحادي والعشرين، مدفوعةً بالانفجار الهائل في حجم بيانات الإنترنت. وكشفت قواعد البيانات العلائقية التقليدية عن ثلاثة معوقات رئيسية عند مواجهتها لبيانات بحجم البيتابايت، وملايين الاتصالات المتزامنة، والبيانات غير المتجانسة: مخططات ثابتة غير قادرة على التكيف مع تنوع البيانات، وصعوبات في التوسع الأفقي، وأداء JOIN ضعيف للغاية مع أحجام البيانات الكبيرة. وتتمثل فلسفة التصميم الأساسية لـ NoSQL في: المقايضة بين القيود والأداء — التضحية بالاتساق القوي وعمليات الربط المعقدة مقابل قابلية التوسع الأفقي والإنتاجية العالية.
كيف تعمل: تتميز كل عائلة من العائلات الأربع الرئيسية لقواعد بيانات NoSQL بنماذج بيانات وضمانات اتساق مختلفة. وتُعد مخازن «المفتاح-القيمة» هي الأبسط (عمليات قراءة وكتابة من الدرجة O(1))، في حين تُعد قواعد بيانات المستندات هي الأكثر تنوعًا (نموذج شبيه بـ JSON)، وتتميز قواعد البيانات الموجهة بالأعمدة بأدائها المتميز في السيناريوهات التي تتطلب عمليات كتابة مكثفة، بينما تتفوق قواعد بيانات الرسوم البيانية في الاستعلامات العلائقية. وباعتبارها نموذجًا تمثيليًّا لقواعد بيانات المستندات، تحقق MongoDB أفضل توازن بين المرونة وقدرات الاستعلام.
(1) لماذا نحتاج إلى NoSQL؟
في أواخر العقد الأول من القرن الحادي والعشرين، شهد حجم البيانات الصادرة عن تطبيقات الإنترنت طفرة هائلة:
- تحتاج «جوجل» إلى تخزين جميع صفحات الويب الموجودة على الإنترنت (BigTable، 2006)
- «أمازون» بحاجة إلى التعامل مع ذروة الطلب على التسوق (Dynamo، 2007)
- تواجه قواعد البيانات العلائقية التقليدية صعوبات في معالجة البيانات التي تصل إلى حجم البيتابايت
(2) العائلات الأربع الرئيسية لـ NoSQL
تحليل النقاط الرئيسية:
- تُعد مخازن «المفتاح-القيمة» هي الأبسط — فهي تتألف فقط من مفاتيح وقيم ولا تدعم الاستعلامات المعقدة، لكنها توفر أعلى مستوى من الأداء.
- تُعد قاعدة بيانات المستندات هي الأكثر تنوعًا في الاستخدامات — فهي تدعم التداخل والمصفوفات والفهارس الثانوية، مما يجعلها مناسبة لمعظم تطبيقات الويب.
- تتميز قواعد البيانات الموجهة بالأعمدة بقدرتها الفائقة على استيعاب البيانات — حيث يتم تخزين البيانات حسب مجموعات الأعمدة، مما يجعلها مناسبة للسلاسل الزمنية وبيانات السجلات
- تتميز قواعد البيانات الشبكية بقدرتها الفائقة على تمثيل العلاقات — فهي تخزن العقد والحواف بشكل أصلي، مما يجعلها مناسبة تمامًا للشبكات الاجتماعية وأنظمة التوصيات.
| النوع | الممثل | نموذج البيانات | السيناريوهات النموذجية | الاتساق |
|---|---|---|---|---|
| المفتاح-القيمة | Redis | المفتاح → القيمة | التخزين المؤقت، الجلسات، العدادات | الاتساق النهائي |
| المستندات | MongoDB | مستندات JSON/BSON | أنظمة إدارة المحتوى (CMS)، التجارة الإلكترونية، سجلات إنترنت الأشياء (IoT) | قابلة للتكوين |
| مجموعة الأعمدة | كاساندرا | مجموعة الأعمدة BigTable | بيانات السلاسل الزمنية، كثيفة الكتابة | التناسق النهائي |
| الشكل | Neo4j | العقد + الحواف | الشبكات الاجتماعية، أنظمة التوصيات | الاتساق القوي |
graph LR
A[NoSQL Database] --> B[Key-Value Store<br/>Redis/DynamoDB]
A --> C[Document Database<br/>MongoDB/CouchDB]
A --> D[Columnar Database<br/>Cassandra/HBase]
A --> E[Graph Database<br/>Neo4j/ArangoDB]
style A fill:#cce5ff
style C fill:#d4edda
| النوع | مثال | نموذج البيانات | السيناريوهات النموذجية |
|---|---|---|---|
| المفتاح-القيمة | Redis | المفتاح → القيمة | التخزين المؤقت، الجلسات، العدادات |
| المستندات | MongoDB | مستندات JSON/BSON | أنظمة إدارة المحتوى (CMS)، التجارة الإلكترونية، سجلات إنترنت الأشياء (IoT) |
| مجموعة الأعمدة | كاساندرا | مجموعة الأعمدة BigTable | بيانات السلاسل الزمنية، التي تتطلب عمليات كتابة مكثفة |
| الشكل | Neo4j | العقد + الحواف | الشبكات الاجتماعية، أنظمة التوصية |
(3) لماذا يُعدّ MongoDB الأكثر شيوعًا؟
نظرة عامة على المفهوم: تتمتع MongoDB بأعلى حصة سوقية بين العائلات الأربع الرئيسية لقواعد بيانات NoSQL (تحتل المرتبة الأولى في تصنيفات DB-Engines لـ NoSQL) لأنها تحقق أفضل توازن بين المرونة والوظائف. وبالمقارنة مع مخازن «المفتاح-القيمة»، تدعم MongoDB الفهارس الثانوية وخطوط التجميع؛ وبالمقارنة مع قواعد البيانات الموجهة بالأعمدة، تدعم MongoDB المستندات المتداخلة والمخططات المرنة؛ وبالمقارنة مع قواعد البيانات البيانية، تتميز MongoDB بسهولة التعلم.
| المزايا الرئيسية لـ MongoDB | الوصف | المقارنة مع قواعد بيانات NoSQL الأخرى |
|---|---|---|
| نموذج بيانات شبيه بـ JSON | لا يتطلب الأمر أي جهد للتعلم من جانب مطوري الواجهة الأمامية | يتطلب Redis تعلم الأمر key |
| تداخل المستندات | السجل الواحد يمثل شجرة كائنات كاملة | تتطلب كاساندرا عمليات ربط بين جداول متعددة |
| الفهارس الثانوية | توفر مرونة مع الحفاظ على أداء الاستعلامات | لا تحتوي Redis على فهارس |
| مسار التجميع | معالجة بيانات أكثر فاعلية من SQL | تتمتع كاساندرا بقدرات استعلام محدودة |
| برنامج التشغيل الرسمي لـ Node.js + mongoose | النظام البيئي الأكثر شمولاً لـ JavaScript | الأفضل بين جميع قواعد بيانات NoSQL |
| خدمات Atlas السحابية | إنشاء مجموعات عالمية بنقرة واحدة | تكاليف عالية للاستضافة الذاتية والتشغيل |
4. تاريخ MongoDB وتطور إصداراتها
نظرة عامة على المفهوم: تم تطوير MongoDB بواسطة شركة 10gen (التي أصبحت الآن MongoDB Inc.) في عام 2007، وتم إصداره كمشروع مفتوح المصدر في عام 2009. من استخدامه الأولي كمخزن بسيط للوثائق، مرورًا بدعم الإصدار 4.0 للمعاملات متعددة الوثائق، وصولًا إلى دعم الإصدار 7.0 للبحث المتجه، تطورت MongoDB من «قاعدة بيانات NoSQL غير قادرة على معالجة المعاملات المعقدة» إلى قاعدة بيانات متعددة الأغراض «توفر نمذجة مرنة وتوافقًا مع معايير ACID».
الخط الزمني للتطور: يمكن تقسيم تطور MongoDB إلى ثلاث مراحل: مرحلة القدرات الأساسية (1.x–3.x: CRUD الأساسية + مجموعات النسخ المتماثلة + التجزئة)، ومرحلة القدرات المؤسسية (4.x–5.x: المعاملات متعددة المستندات + مجموعات السلاسل الزمنية + بحث Atlas)، ومرحلة التطور الذكي (6.x–8.x: البحث المتجهي + البيانات المشفرة عند الاستعلام + بدون خادم).
| التاريخ | الحدث | الأهمية |
|---|---|---|
| 2007 | أسس دوايت ميريمان وإليوت هورويتز وكيفن رايان شركة 10gen | إطلاق المشروع |
| 2009 | إصدار MongoDB 1.0 (المبني على لغة C++) | أول إصدار مفتوح المصدر |
| 2013 | تغيير اسم شركة 10gen إلى MongoDB Inc. | أضواء على العلامة التجارية |
| 2014 | إطلاق خدمة «أطلس» السحابية | التحول إلى النمط السحابي الأصلي |
| 2018 | تم إصدار الإصدار 4.0، الذي يدعم المعاملات متعددة المستندات (ACID) | الحل الأمثل للنزاعات |
| 2020 | إصدار الإصدار 5.0، مع تقديم مجموعات السلاسل الزمنية وواجهات برمجة التطبيقات ذات الإصدارات | تحسينات سيناريوهات إنترنت الأشياء |
| صدر في يوليو 2023 | دعم مدمج للبحث في البيانات المتجهة | عصر الذكاء الاصطناعي ونماذج اللغة الكبيرة |
| 2026 | الإصدار 8.0 (الإصدار المرشح الحالي لبرنامج الدعم طويل الأمد) | أحدث إصدار مستقر |
(1) 4.1 الأصول
(2) 4.2 الميزات الرئيسية لـ MongoDB 7.x
graph TB
A[MongoDB 7.0 Key Features] --> B[Document Model<br/>BSON + Nesting]
A --> C[Aggregation Pipeline<br/>$facet/$bucket/$lookup]
A --> D[Transactions<br/>Multiple Documents ACID]
A --> E[Change Streams<br/>Real-Time Change Monitoring]
A --> F[Atlas Search<br/>Full Text + Vector Search]
A --> G[Time Series<br/>IoT Scene Optimization]
style A fill:#cce5ff
(3) 4.3 طرق النشر
نظرة عامة على المفهوم: يدعم MongoDB أربعة خيارات للنشر — خدمة Atlas السحابية (بدون أي أعباء تشغيلية)، والنشر على عقدة واحدة (للتطوير والتعلم)، ومجموعات النسخ المتماثلة (لتوفير التوافر العالي في بيئة الإنتاج)، والمجموعات المقسمة (للتوسع الأفقي لمجموعات البيانات الكبيرة). وتتمثل الاعتبارات الرئيسية عند اختيار خيار النشر في: حجم البيانات، والتزامن، ومتطلبات التوافر، والقدرات التشغيلية.
| طريقة النشر | حالات الاستخدام | المزايا | حجم البيانات |
|---|---|---|---|
| خدمات أطلس السحابية | الأفراد / الشركات الصغيرة والمتوسطة / الشركات متعددة الجنسيات | لا تتطلب صيانة، ونشر عالمي، ونسخ احتياطية تلقائية | التوسع المرن |
| برنامج مستقل يتم استضافته ذاتيًا | التطوير والتعلم المحلي | تحكم كامل، بدون تكلفة | أقل من 1 تيرابايت |
| مجموعة النسخ المتماثلة المُستضافة ذاتيًا | بيئة الإنتاج | التوافر العالي، التحويل التلقائي في حالة الفشل | أقل من 8 تيرابايت لكل شارد |
| مجموعة مقسمة تم إنشاؤها ذاتيًا | أحجام بيانات كبيرة، معدل نقل بيانات عالٍ | التوسع الأفقي، سعة تخزين بمقياس البيتابايت | بمقياس البيتابايت |
| نشر Docker | CI/CD، الاختبار المحلي | البدء السريع، قابل للتكرار | مستوى التطوير |
▶ مثال: ثلاث طرق للاتصال بـ MongoDB
# 1. mongosh Connect Atlas Cloud Services
mongosh "mongodb+srv://cluster0.mongodb.net/mydb" --username alice
# 2. mongosh Connect to a self-hosted local replica set
mongosh "mongodb://localhost:27017/mydb"
# 3. mongosh Connect Docker Container
mongosh "mongodb://192.168.1.100:27017/mydb"
الإخراج:
TEXT 📖 للعرض فقطCurrent Mongosh Log ID: 667f1f77bcf86cd799439011 Connecting to: mongodb://localhost:27017/mydb Using MongoDB 7.0.5
5. النموذج الوثائقي مقابل النموذج العلائقي
شرح المفهوم: يُعد نموذج المستند والنموذج العلائقي نموذجين مختلفين جذريًّا في نمذجة البيانات. حيث يقسم النموذج العلائقي البيانات إلى جداول متعددة، يتم دمجها أثناء وقت التشغيل باستخدام عمليات «JOIN»؛ أما نموذج المستند فيدمج البيانات ذات الصلة داخل مستند واحد ويعرضها في استعلام واحد. لكل نموذج مزاياه وعيوبه — فالنموذج الوثائقي مناسب للسيناريوهات التي تتضمن بيانات متماسكة وتغييرات متكررة في المخطط، بينما النموذج العلائقي مناسب للسيناريوهات التي تتضمن علاقات معقدة بين البيانات واتساقًا قويًّا في المعاملات.
كيفية العمل: يتبع النموذج العلائقي تصميمًا معياريًا — حيث يتم تخزين كل عنصر من عناصر البيانات مرة واحدة فقط ويتم ربطه من خلال مراجع المفاتيح الخارجية. يتبع نموذج المستندات تصميمًا غير معياري — حيث يتم تضمين البيانات التي يتم الوصول إليها معًا بشكل متكرر ضمن نفس المستند، مما يضحي بالتكرار مقابل تحسين أداء الاستعلامات. يدعم MongoDB تداخل المستندات حتى عمق 100 مستوى، مع حجم أقصى للمستند يبلغ 16 ميغابايت، وهو ما يكفي لتلبية احتياجات نمذجة البيانات لمعظم تطبيقات الويب.
(1) الاختلافات الرئيسية
graph TB
subgraph Relational Model
T1[users Table<br/>id, name, email] --> J1[JOIN]
T2[orders Table<br/>id, user_id, total] --> J1
T3[order_items Table<br/>id, order_id, product_id] --> J1
J1 --> R[Search Results<br/>Must be merged at runtime]
end
subgraph Document Model
D1[orders Gathering<br/>A document = One order<br/>Includes user + items] --> R2[Search Results<br/>One query returns]
end
style J1 fill:#f8d7da
style R2 fill:#d4edda
(2) مقارنة بين مصطلحات «Relational» و«MongoDB»
| مصطلحات العلاقات | مصطلحات MongoDB | الوصف |
|---|---|---|
| قاعدة البيانات | قاعدة البيانات | قاعدة البيانات |
| جدول | مجموعة | جدول / مجموعة |
| الصف | المستند | الصف / المستند |
| عمود | حقل | عمود / حقل |
| المفتاح الأساسي | _id | المفتاح الأساسي (معرّف الكائن الذي يتم إنشاؤه تلقائيًا) |
| المفتاح الخارجي | المرجع / التضمين | المفتاح الخارجي / المستند المضمّن |
| الانضمام | $lookup / التضمين | ربط الجداول / تداخل المستندات |
| الفهرس | الفهرس | الفهرس |
| المعاملة | المعاملة (4.0+) | المعاملة |
(3) متى يُستخدم MongoDB، ومتى يُستخدم SQL؟
شرح المفهوم: لا يستبعد كل من MongoDB وSQL وجود الآخر — فالعديد من أنظمة الإنتاج تستخدم كليهما (التخزين متعدد اللغات). يُعد MongoDB مناسبًا للسيناريوهات التي تتسم بتغييرات متكررة في المخطط ومعدل إنتاجية كتابة مرتفع، في حين أن SQL مناسب للسيناريوهات التي تتطلب اتساقًا قويًّا في المعاملات وعلاقات معقدة. ويكمن المفتاح في تحديد الفئة التي يندرج تحتها سيناريو عملك.
| السيناريو | التوصية | السبب |
|---|---|---|
| التغييرات المتكررة في المخطط (نظام إدارة المحتوى، كتالوج المنتجات) | ✅ MongoDB | تدعم المستندات بطبيعتها البيانات غير المتجانسة |
| معدل نقل بيانات كتابة عالٍ (السجلات، إنترنت الأشياء) | ✅ MongoDB | الترابطية على مستوى المستند، دون أقفال المعاملات |
| عمليات الربط المعقدة بين عدة جداول (نظم تخطيط موارد المؤسسات، القطاع المصرفي) | ⚠️ استخدم بحذر | دالة $lookup ليست متطورة بقدر دالة JOIN |
| اتساق قوي في المعاملات (المالية، المخزون) | ⚠️ MongoDB 4.0+ | مدعوم، ولكن مع انخفاض في الأداء |
| OLAP للبيانات الضخمة (مستودع البيانات) | ❌ استخدم بحذر | يُعد ClickHouse / BigQuery خيارات أفضل |
| مخطط ثابت (الطلبات، المستخدمون) | ✅ يُقبل استخدام لغة SQL أيضًا | يعتمد على تفضيلات الفريق |
النهج المختلط: استخدام MySQL لبيانات الأعمال الأساسية (المستخدمون، الطلبات، المدفوعات) لضمان اتساق المعاملات؛ واستخدام MongoDB لنمذجة مرنة لسجلات السلوك، وكتالوجات المنتجات، وبيانات المحتوى. ومزامنة البيانات عبر قوائم انتظار الرسائل أو مسارات ETL.
6. خدمة MongoDB Atlas السحابية
نظرة عامة على المفهوم: MongoDB Atlas هي خدمة قاعدة بيانات سحابية رسمية ومُدارة بالكامل، متوفرة على المنصات السحابية الثلاث الرئيسية: AWS وAzure وGoogle Cloud. تكمن القيمة الأساسية لـ Atlas في نهجها القائم على «عدم الحاجة إلى صيانة» — فهي تقوم تلقائيًا بنشر مجموعات النسخ المتماثلة، وإجراء النسخ الاحتياطية، وإدارة التحويل التلقائي في حالة الفشل، والمراقبة وإرسال التنبيهات، وتطبيق تصحيحات الأمان. بالنسبة للفرق التي لا تمتلك مسؤول قاعدة بيانات مخصصًا، يمكن لـ Atlas تقليل وقت التشغيل بنسبة 80%.
(1) ما هو أطلس؟
MongoDB Atlas هي خدمة قاعدة بيانات سحابية مُدارة بالكامل تقدمها شركة MongoDB، وهي متوفرة على المنصات السحابية الثلاث الرئيسية: AWS وAzure وGoogle Cloud.
graph LR
A[Your App] --> B[Atlas Global Clusters]
B --> C[Multi-Region Replicas<br/>Automatic Failover]
B --> D[Automatic Backup<br/>PITR Point-in-Time Recovery]
B --> E[Monitoring Alerts<br/>Performance Optimization Recommendations]
B --> F[Security and Compliance<br/>SCRAM + TLS]
style B fill:#d4edda
(2) باقة «أطلس» المجانية
| الموارد | الحصة المجانية |
|---|---|
| سعة التخزين | 512 ميغابايت |
| ذاكرة الوصول العشوائي | المشتركة |
| المنطقة | أي |
| النسخ الاحتياطي | لا شيء |
| المدة | مجاني إلى الأبد |
▶ المثال 1: إنشاء مجموعة Atlas في 5 دقائق
1. Visit https://www.mongodb.com/cloud/atlas/register Register
2. Select "Build a Cluster" → "Shared" → "Free"
3. Selecting a Cloud Provider(AWS)and regions(We recommend choosing a location close to the target market.)
4. Cluster Name:Cluster0
5. Click "Create Cluster",Waiting 1-3 minutes
6. In "Database Access" Add a User(Username + Password)
7. In "Network Access" Add IP Whitelist(0.0.0.0/0 Allow all IP)
8. Click "Connect" → "Connect your application" → Get the connection string
(3) ثلاثة مستويات من المجموعات
| الفئة | ينطبق على | السعر |
|---|---|---|
| M0 Sandbox | التعلم، إنشاء النماذج الأولية | مجاني |
| M10 / M20 | الإنتاج على نطاق صغير | ابتداءً من حوالي 60 دولارًا في الشهر |
| M30 / M40 | إنتاج متوسط الحجم | ابتداءً من حوالي 300 دولار شهريًّا |
| M80+ | الإنتاج على نطاق واسع | 2,000 دولار أمريكي أو أكثر شهريًّا |
| Atlas Serverless | حمل متقطع | الدفع حسب الاستخدام |
7. نظرة عامة على منظومة MongoDB
(1) المكونات الأساسية
graph TB
subgraph "MongoDB Ecology"
A[MongoDB Server<br/>Core Database Engine]
B[mongosh<br/>Command-Line Client]
C[MongoDB Compass<br/>GUI Visualization Tools]
D[MongoDB Atlas<br/>Cloud Hosting Services]
E[BI Connector<br/>Tableau / Power BI Integration]
F[Kafka Connector<br/>Real-Time Data Pipeline]
G[mongodump / mongorestore<br/>Backup and Recovery Tool]
end
A --> B
A --> C
A --> D
A --> E
A --> F
A --> G
style A fill:#cce5ff
style D fill:#d4edda
(2) تعتمد على لغة البرمجة
| اللغة | برامج التشغيل الرسمية | برامج ODM/ORM الشائعة |
|---|---|---|
| JavaScript / Node.js | mongodb |
mongoose (27 ألف⭐) |
| بايثون | pymongo |
MongoEngine، Flask-MongoEngine |
| جافا | mongodb-driver-sync |
Spring Data MongoDB |
| اذهب | mongo-go-driver |
mgo، Qor |
| PHP | mongodb |
Doctrine MongoDB |
| C# | MongoDB.Driver |
MongoDB.Entities |
| روبي | mongo |
Mongoid |
(3) المعيار الفعلي في منظومة Node.js: Mongoose
نظرة عامة على المفهوم: يُعد Mongoose أكثر برامج ODM (نمذجة الوثائق الكائنية) لـ MongoDB شيوعًا في منظومة Node.js، حيث حصل على أكثر من 27 ألف نجمة على GitHub. وبالاعتماد على برنامج التشغيل الأصلي mongodb، يوفر Mongoose ميزات متقدمة مثل تعريف المخطط، والتحقق من صحة البيانات، والبرمجيات الوسيطة، واستعلامات populate للربط، مما يجعل عمليات MongoDB أكثر أمانًا وسهولة في الاستخدام. ويأتي ذلك مقابل زيادة طفيفة في استهلاك الأداء (والتي يمكن تعطيلها عبر lean()).
| البعد | برنامج التشغيل الأصلي لـ MongoDB | Mongoose ODM |
|---|---|---|
| تعريف المخطط | ❌ لا يوجد | ✅ النوع + التحقق من الصحة |
| التحقق من صحة البيانات | يدوي | تلقائي |
| البرمجيات الوسيطة | ❌ لا يوجد | ✅ ربط ما قبل/بعد |
| الاستعلام المرتبط | $lookup يدويًا | ✅ populate() |
| الأداء | الأمثل | أقل قليلاً (يمكن تعويض ذلك باستخدام lean()) |
| منحنى التعلم | منخفض | متوسط |
// mongoose 7.x — Node.js Eco-Friendly Is All the Rage ODM(27k⭐)
const mongoose = require('mongoose');
// 1. Connect to the Database
mongoose.connect('mongodb://localhost:27017/shophub');
// 2. Definition Schema(Data Model)
const productSchema = new mongoose.Schema({
sku: { type: String, required: true, unique: true },
title: { type: String, required: true },
price: { type: Number, required: true, min: 0 },
category: { type: String, enum: ['Electronics', 'Clothing', 'Books'] },
attributes: { type: Object, default: {} },
tags: [String],
stock: { type: Number, default: 0 }
}, { timestamps: true });
// 3. Create Model
const Product = mongoose.model('Product', productSchema);
// 4. CRUD Operation
const phone = await Product.create({
sku: 'PHONE-X-256-BLK',
title: 'Smartphone X 256GB Black',
price: 599.99,
category: 'Electronics',
attributes: { color: 'Black', storage: '256GB' },
tags: ['5g', 'amoled'],
stock: 80
});
الإخراج:
TEXT 📖 للعرض فقط{ _id: ObjectId('507f1f77bcf86cd799439011'), sku: 'PHONE-X-256-BLK', title: 'Smartphone X 256GB Black', price: 599.99, category: 'Electronics', attributes: { color: 'Black', storage: '256GB' }, tags: ['5g', 'amoled'], stock: 80, createdAt: ISODate('2026-07-01T10:00:00Z'), updatedAt: ISODate('2026-07-01T10:00:00Z') }
▶ المثال 2: تثبيت مجموعة أدوات MongoDB الكاملة
# 1. Installation mongosh(Command-Line Client)
brew install mongosh # macOS
sudo apt install mongosh # Ubuntu
# 2. Installation MongoDB Compass(GUI Tools)
# Download from https://www.mongodb.com/try/download/compass
# 3. Installation Node.js Driver
npm install mongodb --save
# 4. Installation mongoose(Recommendations)
npm install mongoose --save
# 5. Verify the Installation
mongosh --version
node -e "console.log(require('mongoose').version)"
الإخراج:
TEXT 📖 للعرض فقط2.1.0 7.0.0
8. MongoDB وأسواقها المستهدفة الثلاثة الرئيسية
(1) سوق الشرق الأوسط (باللغة العربية)
حالات الاستخدام:
- إشعارات الدفع لتطبيقات الويب التقدمية (PWA) مع إعطاء الأولوية للأجهزة المحمولة
- منصات التجارة الإلكترونية (نون، نامشي، أمازون الشرق الأوسط)
- تطبيقات وسائل التواصل الاجتماعي (سجل المحادثات، موجز الأخبار)
مزايا MongoDB:
- نموذج المستند مناسب للتعليقات المعقدة والمتداخلة باللغة العربية
- معدل نقل بيانات كتابة عالٍ لمواكبة الأحداث الكبرى لمبيعات التجارة الإلكترونية في الشرق الأوسط (رمضان، «الجمعة البيضاء»)
- مركز البيانات في المملكة العربية السعودية (Atlas me-central-1)
(2) السوق البرازيلية (البرتغالية)
حالات الاستخدام:
- التجارة الإلكترونية (Mercado Livre، Americanas)
- التكنولوجيا المالية (Nubank، PicPay)
- تتبع الطرود (Correios)
مزايا MongoDB:
- مخطط مرن يتكيف مع التغييرات المتكررة في اللوائح الضريبية البرازيلية
- معالجة مسارات الطلبات باستخدام مجموعات السلاسل الزمنية
- مركز البيانات في ساو باولو، البرازيل (Atlas sa-east-1)
(3) السوق اليابانية (باللغة اليابانية)
حالات الاستخدام:
- خوادم الألعاب (بيانات المستخدمين، العناصر داخل اللعبة)
- التجارة الإلكترونية (راكوتين، ياهو! شوبينغ)
- منصات المحتوى (ملاحظة: Hatena)
مزايا MongoDB:
- يدعم التوسع الأفقي ملايين المستخدمين المتزامنين (ذروة حركة المرور أثناء إطلاق اللعبة)
- قائمة المتصدرين في «تغيير التيارات» في الوقت الفعلي
- مركز البيانات في طوكيو، اليابان (Atlas ap-northeast-1)
9. مسارات التعلم المقترحة
(1) خريطة طريق لهذا الدرس التعليمي
graph LR
A[Phase 1<br/>MongoDB Getting Started<br/>6 Lessons] --> B[Phase 2<br/>CRUD + mongoose<br/>7 Lessons]
B --> C[Phase 3<br/>Aggregation + Index<br/>7 Lessons]
C --> D[Phase 4<br/>Transactions + Replica Sets + Sharding<br/>5 Lessons]
D --> E[Phase 5<br/>Node.js Practical Application + Comprehensive Projects<br/>5 Lessons]
style A fill:#d4edda
style E fill:#cce5ff
(2) المعرفة المسبقة
| لا غنى عنها | موصى بها |
|---|---|
| ✅ أساسيات جافا سكريبت (ES6+) | تايب سكريبت |
| ✅ أساسيات Node.js | إطار عمل Express |
| ✅ عمليات سطر الأوامر | دوكر |
| ✅ واجهة برمجة تطبيقات HTTP / REST | تنسيق البيانات JSON |
(3) الوقت المقدر للدراسة
- الدورة الكاملة + التدريب العملي: 40–50 ساعة
- البدء (المراحل 1–2): 8–10 ساعات
- المستوى المتقدم (المرحلتان 3 و4): 14–18 ساعة
- المشروع الشامل (المرحلة 5): 12–15 ساعة
❓ أسئلة شائعة
populate. وهو أسهل في الاستخدام من برنامج التشغيل الأصلي mongodb، ولكنه يتسبب في زيادة طفيفة في استهلاك الموارد (والتي يمكن تعطيلها في بيئة الإنتاج).📖 ملخص
- ظهرت قواعد بيانات NoSQL استجابةً للانفجار الهائل في حجم البيانات على الإنترنت، وتُعدّ MongoDB مثالاً بارزاً على قواعد بيانات المستندات.
- تم تطوير MongoDB بواسطة شركة 10gen (التي أصبحت الآن MongoDB Inc.) في عام 2007، وتم إصداره كمشروع مفتوح المصدر في عام 2009
- يُعد نموذج المستند مناسبًا للسيناريوهات التي تتسم بتغييرات متكررة في المخطط ومعدل إنتاجية كتابة مرتفع، في حين أن النموذج العلائقي مناسب للسيناريوهات التي تتطلب معاملات قوية.
- BSON هو تنسيق التخزين الخاص بـ MongoDB، وهو يدعم أنواع بيانات أكثر من JSON (مثل Date و ObjectId).
- MongoDB Atlas هي خدمة رسمية مستضافة على السحابة توفر باقة مجانية بسعة 512 ميغابايت
- يُعد Mongoose أكثر مكتبات ODM الخاصة بـ MongoDB شيوعًا في منظومة Node.js (27 ألف⭐)
- ينقسم هذا البرنامج التعليمي إلى 5 مراحل ويتألف من 30 درسًا؛ ويُقدَّر أن يستغرق إكماله ما بين 40 و50 ساعة.
📝 تمارين
-
تمرين أساسي (⭐): انتقل إلى mongodb.com/cloud/atlas لإنشاء حساب، وإنشاء مجموعة M0 مجانية، والاتصال بنجاح باستخدام
mongosh. -
تمرين أساسي (⭐): قم بتنفيذ الأمر
db.runCommand({ ping: 1 })في مجموعة Atlas، والتقط لقطة شاشة للناتج، وراجع أساسيات التحقق من صحة اتصال MongoDB. -
تمرين متقدم (⭐⭐): استخدم mongosh لتنفيذ الأوامر التالية:
use shopdbوdb.products.insertOne({ sku: "TEST-001", title: "Test Product", price: 9.99 })وdb.products.find().pretty()لفهم عملية الإنشاء الضمني لقاعدة البيانات/المجموعة في MongoDB. -
سؤال متقدم (⭐⭐): اقرأ قسم «ما هو NoSQL؟» في الوثائق الرسمية لـ MongoDB (ابحث عن الكلمة المفتاحية)، واذكر حالة استخدام واحدة من الواقع لكل عائلة من العائلات الأربع الرئيسية لـ NoSQL (المفتاح-القيمة، والوثيقة، والموجهة بالأعمدة، والرسم البياني).
-
التحدي (⭐⭐⭐): قارن بين نموذجي ORM في Node.js — MongoDB (Mongoose) و MySQL (Sequelize) — وقم بتنفيذ كود لـ «إنشاء جدول/مجموعة مستخدم (تحتوي على 5 حقول)» لكل منهما، مع ملاحظة الاختلافات في أسلوب واجهة برمجة التطبيقات (API) بين نموذجي ORM هذين.