> For the complete documentation index, see [llms.txt](https://ayakaleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ayakaleaf-pro.ayaka.space/on-premises/ar/alsyanh/updating-mongodb.md).

# تحديث MongoDB

{% hint style="info" %}
أي إصدار جديد من Server CE/Server Pro سيشير إلى أي تغيير في الإصدار المدعوم من MongoDB في [ملاحظات الإصدار](https://docs.overleaf.com/on-premises/release-notes).
{% endhint %}

### هل يجب أن أقوم بتحديث MongoDB؟

يجب عليك **فقط** أن تفكر في تحديث إصدار MongoDB لديك إذا كنت تخطط لترقية مثيل Server CE/Server Pro الخاص بك.

إذا كنت تستخدم إصدارًا من MongoDB أحدث من الإصدار الموصى به لإصدارك الحالي (أو المستهدف) فلا حاجة لإجراء أي تغييرات.

{% hint style="warning" %}
لا ينبغي لك أبدًا الرجوع إلى إصدار أقدم من MongoDB.
{% endhint %}

إذا واجهت مشكلة محددة تعتقد أنها قد تكون مرتبطة بإصدار MongoDB الحالي لديك، فلا تتردد في [فتح تذكرة مشكلة](https://github.com/overleaf/overleaf/issues) إذا كنت مستخدمًا لـ Server CE أو تواصل مع دعم Overleaf إذا كنت مستخدمًا لـ Server Pro.

### التحقق من إصدار MongoDB لديك

فتح `mongo` سيعرض shell الإصدار الحالي فورًا.

مستخدمو Overleaf Toolkit:

```bash
bin/docker-compose exec mongo mongod --version
db version v5.0.24
معلومات البناء: {
    "version": "5.0.24",
    "gitVersion": "f034f0c51b3dffef4b8c9452d77ede9888f28f66",
    "openSSLVersion": "OpenSSL 1.1.1f  31 Mar 2020",
    "modules": [],
    "allocator": "tcmalloc",
    "environment": {
        "distmod": "ubuntu2004",
        "distarch": "x86_64",
        "target_arch": "x86_64"
    }
}
```

مستخدمو Docker Compose:

```bash
docker compose exec mongo mongod --version
db version v5.0.24
معلومات البناء: {
    "version": "5.0.24",
    "gitVersion": "f034f0c51b3dffef4b8c9452d77ede9888f28f66",
    "openSSLVersion": "OpenSSL 1.1.1f  31 Mar 2020",
    "modules": [],
    "allocator": "tcmalloc",
    "environment": {
        "distmod": "ubuntu2004",
        "distarch": "x86_64",
        "target_arch": "x86_64"
    }
}

```

### عملية التحديث

يكون تحديث إصدار MongoDB أثناء ترقية مثيل Server CE/Server Pro الخاص بك كما يلي:

1. حدّد إصدار Server CE/Server Pro الذي تخطط للترقية إليه.
2. ابحث عن إصدار MongoDB الموصى به من قبل ذلك الإصدار المحدد من Overleaf Server CE/Server Pro.
3. اتبع التعليمات لترقية MongoDB إلى الإصدار المستهدف.
4. قم بترقية إصدار صورة Server CE/Server Pro وأعد تشغيل المثيل.

توصيتنا هي الترقية دائمًا **Server CE/Server Pro** إلى أحدث إصدار متاح، لأنه مضمون دائمًا أن يكون مدعومًا (لمستخدمي Server Pro فقط).

{% hint style="danger" %}
عند إجراء ترقية لـ Server CE/Server Pro، نوصي بالترقية إلى أحدث إصدار من الإصدار الرئيسي المنشور **قبل** الترقية إلى أحدث إصدار من **التالية** الإصدار الرئيسي. إذا كان النشر لديك متأخرًا عن أحدث إصدار بأكثر من إصدار رئيسي واحد، فسيُطلب منك إجراء ترقية متعددة الخطوات.

على سبيل المثال، إذا كنت تستخدم 3.5.10، فستحتاج إلى الترقية إلى 3.5.13 -> إجراء ترحيل Full Project History الكامل -> 4.2.9 -> 5.5.4.

يجب عليك **أبدًا** تتجاوز الإصدارات الرئيسية (3.5.10 -> 5.5.4). إذا كنت تستخدم Toolkit، وكنت متأخرًا عن أحدث إصدار بأكثر من إصدار رئيسي واحد، فيجب عليك **لا** استخدام `bin/upgrade` البرنامج النصي لأنك ستحتاج إلى إجراء ترقية يدوية متعددة الخطوات.
{% endhint %}

{% hint style="warning" %}
من المهم التأكد من أخذ [نسخة احتياطية متسقة](/on-premises/ar/alsyanh/data-and-backups.md#performing-a-consistent-backup) **قبل** مع كل ترقية لإصدار رئيسي لكي تتمكن من الرجوع إذا احتجت إلى ذلك.
{% endhint %}

#### معلومات دعم الإصدارات

في حال قررت الانتقال إلى إصدار أقدم، يعرض هذا الجدول الإصدار الموصى به من MongoDB للإصدارات الأقدم من Server CE/Server Pro، لكن يجب عليك **أبدًا** الرجوع بإصدار MongoDB لديك إلى إصدار أقدم.

<table><thead><tr><th width="175">Server CE/Server Pro</th><th width="139" align="center">إصدار MongoDB</th><th align="center">الحد الأدنى لإصدار توافق الميزات</th><th align="center">أقصى إصدار مدعوم من قِبل برنامج تشغيل Node.js</th></tr></thead><tbody><tr><td>2.0.x</td><td align="center">3.4</td><td align="center">-</td><td align="center">-</td></tr><tr><td>2.1.x إلى 2.4.x</td><td align="center">3.6</td><td align="center">-</td><td align="center">-</td></tr><tr><td>>=2.5.0</td><td align="center">4.0</td><td align="center">-</td><td align="center">-</td></tr><tr><td>>=3.1.0</td><td align="center">4.2</td><td align="center">-</td><td align="center">-</td></tr><tr><td>>=3.2.0</td><td align="center">4.4</td><td align="center">-</td><td align="center">-</td></tr><tr><td>>=4.2.0</td><td align="center">5.0</td><td align="center">-</td><td align="center">-</td></tr><tr><td>>=5.1.0</td><td align="center">6.0</td><td align="center">-</td><td align="center">-</td></tr><tr><td>>=5.3.1</td><td align="center">6.0</td><td align="center">5.0</td><td align="center">8.0</td></tr><tr><td>>=5.5.0</td><td align="center">6.0</td><td align="center">6.0</td><td align="center">8.0</td></tr><tr><td>6.0.0</td><td align="center">8.0</td><td align="center">8.0</td><td align="center">8.0</td></tr></tbody></table>

{% hint style="danger" %}
يعتمد الحد الأدنى لإصدار توافق الميزات أعلاه على إصدار MongoDB المقابل الموصى به للاستخدام مع إصدار Overleaf الموضح. إذا كنت تخطط لاستخدام إصدار أعلى، فسيكون لدى MongoDB متطلبه الأدنى الخاص.
{% endhint %}

يمكنك عرض جدول التوافق الذي يحدد الإصدارات المدعومة من برنامج تشغيل MongoDB Node.js للاستخدام مع MongoDB [هنا](https://www.mongodb.com/docs/drivers/node/current/reference/compatibility/).

يمكنك عرض حالة نهاية الدعم لكل إصدار من MongoDB [هنا](https://endoflife.date/mongodb).

#### ترقية MongoDB

يتطلب MongoDB **ترقيات خطوة بخطوة**. وهذا يعني أنه لا يمكنك الانتقال مباشرةً من، لنفترض `4.0` إلى `5.0`. يجب عليك أولًا التحديث إلى `4.2` إلى `4.4`، ثم `5.0`.

{% hint style="info" %}
يستخدم MongoDB الأرقام الزوجية لإصداراته المستقرة.
{% endhint %}

#### **تعليمات التحديث عند تشغيل MongoDB خارج Docker**

فيما يلي روابط لتعليمات التحديث من mongodb.com عند ترقية MongoDB.

* [ملاحظات إصدار MongoDB - ترقية MongoDB من `4.2` إلى `4.4`](https://www.mongodb.com/docs/v4.4/release-notes/4.4-upgrade-standalone/)
* [ملاحظات إصدار MongoDB - ترقية MongoDB من `4.4` إلى `5.0`](https://www.mongodb.com/docs/v5.0/release-notes/5.0-upgrade-replica-set/)
* [ملاحظات إصدار MongoDB - ترقية MongoDB من `5.0` إلى `6.0`](https://www.mongodb.com/docs/v6.0/release-notes/6.0-upgrade-replica-set/)
* [ملاحظات إصدار MongoDB - ترقية MongoDB من `6.0` إلى `7.0`](https://www.mongodb.com/docs/manual/release-notes/7.0-upgrade-replica-set/#std-label-7.0-upgrade-replica-set)
* [ملاحظات إصدار MongoDB - ترقية MongoDB من `7.0` إلى `8.0`](https://www.mongodb.com/docs/manual/release-notes/8.0-upgrade-replica-set/#std-label-8.0-upgrade-replica-set)

{% hint style="info" %}
تعليمات لـ `5.0` وتشير الإصدارات الأعلى إلى تثبيت مجموعة نسخ متماثلة بدلًا من الوضع المستقل. وبما أن Server Pro/CE 4.0.1+ يستخدم المعاملات، فيجب تشغيل MongoDB كمجموعة نسخ متماثلة.
{% endhint %}

{% hint style="warning" %}
توثيق MongoDB من 3.2 إلى 4.2 متاح الآن عبر <https://www.mongodb.com/docs/legacy/>
{% endhint %}

**تعليمات أساسية**

في معظم الحالات يتطلب التحديث إعداد علامة توافق قبل تحديث إصدار mongo فعليًا. الخطوات هي كما يلي:

1. اضبط علامة التوافق كما هو موضح في ملاحظات إصدار MongoDB (انظر الأمثلة أدناه).
2. ثم حدّث صورة mongo:
   1. **مستخدمو Toolkit** تحديث `MONGO_VERSION`، مثلًا `MONGO_VERSION=6.0`
   2. **مستخدمو Docker Compose** حدّث إصدار `mongo` وسم الصورة،\
      مثلًا `services -> mongo -> image: mongo:6.0`;

**مثال: ترقية MongoDB من `5.0` إلى `6.0`**

لنبدأ بالتأكد من أننا نشغّل MongoDB `6.0`:

مستخدمو Overleaf Toolkit:

```bash
bin/docker-compose exec mongo mongod --version
# إصدار قاعدة البيانات v5.0.24
```

مستخدمو Docker Compose:

```bash
docker compose exec mongo mongod --version
# إصدار قاعدة البيانات v5.0.24
```

وفقًا لـ [تعليمات الترقية](https://docs.mongodb.com/manual/release-notes/3.6-upgrade-standalone/#upgrade-version-path)، فالشرط الوحيد هو أن يكون لديك `featureCompatibilityVersion` مضبوطًا على `5.0`. ونفعل ذلك بفتح shell الخاص بـ MongoDB وتشغيل الأمر المشار إليه:

مستخدمو Overleaf Toolkit:

```bash
bin/mongo
# إصدار MongoDB shell v5.0.24
# ...
# overleaf:PRIMARY> db.adminCommand( { setFeatureCompatibilityVersion: "5.0" } )
# { 
# "ok" : 1,
# ...
# }
overleaf:PRIMARY> exit
# وداعًا
```

{% hint style="info" %}
يمكن لمستخدمي Docker Compose تشغيل `docker compose exec mongo mongosh` للحصول على shell وتشغيل الأوامر نفسها التي يستخدمها مستخدمو Toolkit.
{% endhint %}

مستخدمو Overleaf Toolkit:

بعد ذلك سنوقف مثيلي Server CE/Server Pro وMongoDB باستخدام `bin/stop` الأمر، ونضبط `MONGO_VERSION=6.0` في `config/overleaf.rc`، ثم نعيد تشغيل `mongo` الخدمة باستخدام `bin/up mongo`) للتحقق من أن التحديث تم بسلاسة.

أخيرًا، سنحدّث إصدار صورة Server CE/Server Pro إلى الإصدار المستهدف ونعيد إنشاء جميع الخدمات باستخدام `bin/up -d` الأمر.

مستخدمو Docker Compose:

بعد ذلك سنوقف مثيلي Server CE/Server Pro وMongoDB باستخدام `docker compose stop` الأمر، ثم حدّث [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) الملف لاستخدام `image: mongo:6.0`، ثم نعيد تشغيل `mongo` الخدمة باستخدام `docker compose up mongo` الأمر للتحقق من أن التحديث تم بسلاسة.

أخيرًا، سنحدّث إصدار صورة Server CE/Server Pro إلى الإصدار المستهدف ونُعيد إنشاء جميع الخدمات باستخدام `docker compose up` الأمر.

**مثال: ترقية MongoDB من `6.0` إلى `7.0` (مستخدمو Toolkit)**

ابدأ بالتأكد من أنك تشغّل MongoDB `6.0` باستخدام `mongod --version` الأوامر أعلاه.

وفقًا لـ [تعليمات الترقية](https://www.mongodb.com/docs/manual/release-notes/7.0-upgrade-replica-set/#std-label-7.0-upgrade-replica-set)، فالشرط الوحيد هو أن يكون لديك `featureCompatibilityVersion` مضبوطًا على `6.0`. ونفعل ذلك بفتح shell الخاص بـ MongoDB وتشغيل الأمر `db.adminCommand({ setFeatureCompatibilityVersion: "6.0" })` .

مستخدمو Overleaf Toolkit:

```bash
bin/mongo
# ...
# overleaf:PRIMARY> db.adminCommand( { setFeatureCompatibilityVersion: "6.0" } )
# { 
# "ok" : 1,
# ...
# }
overleaf:PRIMARY> exit
# وداعًا
```

بعد ذلك سنوقف مثيلي Server CE/Server Pro وMongoDB باستخدام `bin/stop` الأمر، ونضبط `MONGO_VERSION=7.0` في `config/overleaf.rc`، ثم نعيد تشغيل `mongo` الخدمة باستخدام `bin/up mongo`) للتحقق من أن التحديث تم بسلاسة.

أخيرًا، سنحدّث إصدار صورة Server CE/Server Pro إلى الإصدار المستهدف ونعيد إنشاء جميع الخدمات باستخدام `bin/up -d` الأمر.

**مثال: ترقية MongoDB من `7.0` إلى `8.0` (مستخدمو Toolkit)**

ابدأ بالتأكد من أنك تشغّل MongoDB `7.0` باستخدام `mongod --version` الأوامر أعلاه.

وفقًا لـ [تعليمات الترقية](https://www.mongodb.com/docs/manual/release-notes/8.0-upgrade-replica-set/#std-label-8.0-upgrade-replica-set)، فالشرط الوحيد هو أن يكون لديك `featureCompatibilityVersion` مضبوطًا على `7.0`. ونفعل ذلك بفتح shell الخاص بـ MongoDB وتشغيل الأمر `db.adminCommand({ setFeatureCompatibilityVersion: "7.0", confirm: true })`. لاحظ أن هذا يتطلب الآن وسيطًا إضافيًا `confirm: true` .

```bash
bin/mongo
# ...
# overleaf:PRIMARY> db.adminCommand( { setFeatureCompatibilityVersion: "7.0", confirm: true } )
# { 
# "ok" : 1,
# ...
# }
overleaf:PRIMARY> exit
# وداعًا
```

بعد ذلك سنوقف مثيلي Server CE/Server Pro وMongoDB باستخدام `bin/stop` الأمر، ونضبط `MONGO_VERSION=8.0` في `config/overleaf.rc`، ثم نعيد تشغيل `mongo` الخدمة باستخدام `bin/up mongo`) للتحقق من أن التحديث تم بسلاسة.

أخيرًا، سنحدّث إصدار صورة Server CE/Server Pro إلى الإصدار المستهدف ونعيد إنشاء جميع الخدمات باستخدام `bin/up -d` الأمر.

#### الأوامر المكافئة لمستخدمي docker compose

بالنسبة لمستخدمي docker compose، الأوامر المكافئة هي:

* `docker compose exec mongo mongod --version` لعرض إصدار mongo
* `docker compose exec mongo mongosh` لبدء shell خاص بـ mongo لتنفيذ أوامر الإدارة
* `docker compose stop` أمر إيقاف الخادم
* حرّر [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) الملف لاستخدام `image: mongo:6.0` لترقية إصدار mongo
* `docker compose up mongo` لإعادة تشغيل خدمة mongo والتحقق من أن التحديث تم بسلاسة
* حرّر [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) الملف لاستخدام `image: sharelatex:VERSION` لترقية إصدار الصورة
* `docker compose up` لإعادة إنشاء جميع الخدمات.

### إنشاء دور مخصص

في الإصدار `5.5.1`، أضفنا فحصًا عند بدء التشغيل للتحقق من إصدار توافق الميزات لـ MongoDB. إذا كانت قاعدة بيانات MongoDB لديك تستخدم المصادقة (مثل المصادقة الأساسية)، فقد لا يتمكن `sharelatex` الحاوية من البدء، مع عرض خطأ إذن "*غير مصرح في admin بتنفيذ الأمر*".

لحل هذه المشكلة، يمكنك إما إنشاء دور جديد في MongoDB وتعيينه إلى حساب المستخدم المستخدم للوصول إلى قاعدة البيانات باتباع التعليمات أدناه، أو تعيين `ALLOW_MONGO_ADMIN_CHECK_FAILURES=true` للسماح للفحص بالفشل دون منع بدء النشر.

{% hint style="success" %}
هذا الدور الجديد **فقط** يمنح الإذن بقراءة معاملات خادم MongoDB على مستوى الكتلة، ويمكن إعادة استخدامه لأغراض المراقبة،
{% endhint %}

{% code overflow="wrap" %}

```bash
# مستخدمو Toolkit
$ bin/docker-compose exec -it mongo mongosh -u {{YOUR-ADMIN-USERNAME}} -p

# انتقل إلى قاعدة البيانات "admin" باستخدام
overleaf [direct: primary] sharelatex> use admin
تم الانتقال إلى قاعدة البيانات admin
overleaf [direct: primary] admin> 

# أنشئ دورًا جديدًا لديه إذن استخدام "getParamter". انسخ الدالة أدناه والصقها في shell ثم اضغط مفتاح الإدخال

db.createRole(
  {
    role: "clusterParameterReader",
    privileges: [
      {
        resource: { cluster: true },
        actions: ["getParameter"]    
      }
    ],
    roles: [] 
  }
);

# ارجع إلى قاعدة البيانات "sharelatex" 
use sharelatex
تم الانتقال إلى قاعدة البيانات sharelatex
overleaf [direct: primary] sharelatex> 

# عيّن الدور الجديد "clusterParameterReader" إلى مستخدم قاعدة البيانات لديك عبر نسخ الدالة أدناه ولصقها في shell ثم اضغط مفتاح الإدخال 
db.grantRolesToUser(
  "{{YOUR-DATABASE-USER}}",
  [
    { role: "clusterParameterReader", db: "admin" }
  ]
);

# اكتب exit ثم اضغط Enter للخروج من shell الخاص بـ MongoDB
# شغّل bin/up -d لبدء مجموعة النشر
$ bin/up -d
```

{% endcode %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://ayakaleaf-pro.ayaka.space/on-premises/ar/alsyanh/updating-mongodb.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
