MongoDB: مقدمة إلى MongoDB

تُعد MongoDB قاعدة البيانات الوثائقية الأكثر انتشارًا في العالم — فهي تجعل عملية نمذجة البيانات المرنة وعمليات الكتابة عالية الإنتاجية بسيطة وفعالة.

صُمم هذا الدليل التعليمي لمطوري البرمجيات الخلفية الذين يتمتعون بفهم أساسي للغة جافا سكريبت وNode.js. ويبدأ الدليل بأساسيات NoSQL، ثم يرشدك خطوة بخطوة إلى كيفية بناء تطبيقات جاهزة للاستخدام في بيئة الإنتاج باستخدام MongoDB وMongoose.

1. ما ستتعلمه



2. قصة حقيقية لمهندس برمجيات الخلفية

(1) المشكلة: قواعد البيانات العلائقية غير قادرة على مواكبة التطورات

أليس هي مهندسة برمجيات خلفية في شركة للتجارة الإلكترونية عبر الحدود. وقد تلقت مؤخرًا طلبًا عاجلاً:

"يحتوي جدولنا products بالفعل على مليوني سجل. ويتعين على فريق العمليات تحميل 50,000 وحدة تخزين جديدة (SKU) يوميًا، وتحتوي كل وحدة تخزين على 10–15 سمة ديناميكية (مثل اللون، والحجم، وسعة البطارية، ومعدل تحديث الشاشة). ويتطلب تغيير بنية الجدول قفل قاعدة البيانات لمدة ساعتين، وقد بدأ فريق الأعمال بالفعل في التعبير عن استيائه من هذا الوضع."

المشاكل التي تواجهها:

المشكلة التأثير
هيكل الجدول الثابت في كل مرة تُضاف فيها سمة جديدة، يلزم استخدام عبارة ALTER TABLE، مما يؤثر على خدمات الإنتاج
تضخم الحقول ذات القيمة NULL 90% من الحقول قيمتها NULL، مما يؤدي إلى إهدار مساحة التخزين
ضعف أداء عمليات الربط (JOIN) تستغرق استعلامات الربط بين الجداول المتعددة 5 ثوانٍ أو أكثر للرد عند معالجة مئات الملايين من السجلات
معدل نقل البيانات المنخفض عند الكتابة عبء تشغيل مرتفع للمعاملات العلائقية؛ تصبح عمليات الإدراج بطيئة في ظل التزامن العالي

(2) حل MongoDB

إعادة كتابة نظام SKU باستخدام نموذج المستندات، بحيث يكون كل منتج مستندًا منفصلاً شبيهًا بـ JSON.

JAVASCRIPT
// 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؟

في أواخر العقد الأول من القرن الحادي والعشرين، شهد حجم البيانات الصادرة عن تطبيقات الإنترنت طفرة هائلة:

(2) العائلات الأربع الرئيسية لـ NoSQL

تحليل النقاط الرئيسية:

  1. تُعد مخازن «المفتاح-القيمة» هي الأبسط — فهي تتألف فقط من مفاتيح وقيم ولا تدعم الاستعلامات المعقدة، لكنها توفر أعلى مستوى من الأداء.
  2. تُعد قاعدة بيانات المستندات هي الأكثر تنوعًا في الاستخدامات — فهي تدعم التداخل والمصفوفات والفهارس الثانوية، مما يجعلها مناسبة لمعظم تطبيقات الويب.
  3. تتميز قواعد البيانات الموجهة بالأعمدة بقدرتها الفائقة على استيعاب البيانات — حيث يتم تخزين البيانات حسب مجموعات الأعمدة، مما يجعلها مناسبة للسلاسل الزمنية وبيانات السجلات
  4. تتميز قواعد البيانات الشبكية بقدرتها الفائقة على تمثيل العلاقات — فهي تخزن العقد والحواف بشكل أصلي، مما يجعلها مناسبة تمامًا للشبكات الاجتماعية وأنظمة التوصيات.
النوع الممثل نموذج البيانات السيناريوهات النموذجية الاتساق
المفتاح-القيمة Redis المفتاح → القيمة التخزين المؤقت، الجلسات، العدادات الاتساق النهائي
المستندات MongoDB مستندات JSON/BSON أنظمة إدارة المحتوى (CMS)، التجارة الإلكترونية، سجلات إنترنت الأشياء (IoT) قابلة للتكوين
مجموعة الأعمدة كاساندرا مجموعة الأعمدة BigTable بيانات السلاسل الزمنية، كثيفة الكتابة التناسق النهائي
الشكل Neo4j العقد + الحواف الشبكات الاجتماعية، أنظمة التوصيات الاتساق القوي
100%
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

100%
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

BASH
# 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) الاختلافات الرئيسية

100%
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.

100%
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 دقائق

TEXT 📖 للعرض فقط
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) المكونات الأساسية

100%
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())
منحنى التعلم منخفض متوسط
JAVASCRIPT
// 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 الكاملة

BASH
# 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) سوق الشرق الأوسط (باللغة العربية)

حالات الاستخدام:

مزايا MongoDB:

(2) السوق البرازيلية (البرتغالية)

حالات الاستخدام:

مزايا MongoDB:

(3) السوق اليابانية (باللغة اليابانية)

حالات الاستخدام:

مزايا MongoDB:



9. مسارات التعلم المقترحة

(1) خريطة طريق لهذا الدرس التعليمي

100%
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) الوقت المقدر للدراسة



❓ أسئلة شائعة

س هل MongoDB مجاني؟
ج إصدار MongoDB Community Edition (المثبت محليًّا) مجاني تمامًا ومفتوح المصدر (بموجب ترخيص SSPL). يوفر MongoDB Atlas مجموعة (كلستر) بسعة 512 ميغابايت مجانية إلى الأبد. أما الإصدار التجاري (Enterprise Advanced) فيتم احتساب تكلفته بناءً على حجم المجموعة.
س أيهما يجب أن أختار، MongoDB أم MySQL؟
ج يعتمد ذلك على سيناريو العمل. مخطط ثابت + معاملات قوية (مثل الطلبات، ونظام تخطيط موارد المؤسسات (ERP)) → MySQL؛ تغييرات متكررة في المخطط + أحجام كتابة كبيرة (مثل نظام إدارة المحتوى (CMS)، وكتالوجات المنتجات، والسجلات) → MongoDB. يمكنك أيضًا استخدام نهج هجين (MySQL لبيانات الأعمال الأساسية + MongoDB لسجلات سلوك المستخدمين).
س هل أحتاج إلى معرفة لغة SQL لتعلم MongoDB؟
ج لا. يغطي هذا البرنامج التعليمي مفاهيم قواعد البيانات المستندية من الصفر. ومع ذلك، إذا كان لديك فهم أساسي للغة SQL، فستتمكن من استيعاب مفاهيم MongoDB مثل $lookup (المشابهة لـ JOIN) و$group (المشابهة لـ GROUP BY) في مسار التجميع بشكل أسرع.
س ما هي العلاقة بين «المستند» في MongoDB و JSON؟
ج تُخزَّن مستندات MongoDB بتنسيق BSON (Binary JSON)، الذي يدعم أنواع بيانات أكثر من JSON (مثل Date و ObjectId و Decimal128). ومع ذلك، فإن بناء الجملة متطابق تقريبًا مع JSON، لذا لا يواجه مطورو الواجهة الأمامية أي صعوبة في التعلم.
س ما هو الحجم الأقصى لمجموعة البيانات التي يمكن لـ MongoDB تخزينها؟
ج يبلغ الحجم الأقصى للمستند الواحد في MongoDB 16 ميغابايت (فلسفة التصميم: تجنب تخزين المستندات الضخمة جدًّا). ويمكن لمجموعة واحدة تخزين بيتابايتات من البيانات (من خلال تقسيم البيانات إلى شاردات). وفي منصة Atlas، تدعم أكبر مجموعة 4,096 شاردة، حيث تبلغ سعة كل شاردة 32 تيرابايت.
س ما هو Mongoose؟ ولماذا نستخدمه؟
ج Mongoose هو أكثر برامج ODM الخاصة بـ MongoDB شيوعًا في منظومة Node.js (27 ألف⭐). ويوفر ميزات متقدمة مثل تعريف المخطط، والتحقق من صحة البيانات، والبرمجيات الوسيطة، واستعلامات الانضمام populate. وهو أسهل في الاستخدام من برنامج التشغيل الأصلي mongodb، ولكنه يتسبب في زيادة طفيفة في استهلاك الموارد (والتي يمكن تعطيلها في بيئة الإنتاج).

📖 ملخص


📝 تمارين

  1. تمرين أساسي (⭐): انتقل إلى mongodb.com/cloud/atlas لإنشاء حساب، وإنشاء مجموعة M0 مجانية، والاتصال بنجاح باستخدام mongosh.

  2. تمرين أساسي (⭐): قم بتنفيذ الأمر db.runCommand({ ping: 1 }) في مجموعة Atlas، والتقط لقطة شاشة للناتج، وراجع أساسيات التحقق من صحة اتصال MongoDB.

  3. تمرين متقدم (⭐⭐): استخدم mongosh لتنفيذ الأوامر التالية: use shopdb وdb.products.insertOne({ sku: "TEST-001", title: "Test Product", price: 9.99 }) وdb.products.find().pretty() لفهم عملية الإنشاء الضمني لقاعدة البيانات/المجموعة في MongoDB.

  4. سؤال متقدم (⭐⭐): اقرأ قسم «ما هو NoSQL؟» في الوثائق الرسمية لـ MongoDB (ابحث عن الكلمة المفتاحية)، واذكر حالة استخدام واحدة من الواقع لكل عائلة من العائلات الأربع الرئيسية لـ NoSQL (المفتاح-القيمة، والوثيقة، والموجهة بالأعمدة، والرسم البياني).

  5. التحدي (⭐⭐⭐): قارن بين نموذجي ORM في Node.js — MongoDB (Mongoose) و MySQL (Sequelize) — وقم بتنفيذ كود لـ «إنشاء جدول/مجموعة مستخدم (تحتوي على 5 حقول)» لكل منهما، مع ملاحظة الاختلافات في أسلوب واجهة برمجة التطبيقات (API) بين نموذجي ORM هذين.

Web-Tutorial.com

فريق Web-Tutorial التقني

منصة دروس برمجية يديرها عدة مطورين. كل درس يتم كتابته ومراجعته بواسطة مطورين متخصصين في المجال. نعمل على ضمان دقة وموثوقية المحتوى — إذا لاحظت أي مشكلة، فيرجى إخبارنا.

100%