> For the complete documentation index, see [llms.txt](https://overleaf-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://overleaf-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` ينبغي أن يطبع الغلاف الإصدار الحالي فورًا.

مستخدمو Overleaf Toolkit:

```bash
bin/docker-compose exec mongo mongod --version
db version v5.0.24
Build Info: {
    "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
Build Info: {
    "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/Pro، نوصي بالترقية إلى أحدث إصدار من الإصدار الرئيسي المنشور **قبل** الترقية إلى أحدث إصدار من **التالي** الإصدار الرئيسي. إذا كان النشر لديك متأخرًا بأكثر من إصدار رئيسي واحد عن الأحدث، فستحتاج إلى إجراء ترقية متعددة المراحل.

على سبيل المثال، إذا كنت تشغّل 3.5.10، فستحتاج إلى الترقية إلى 3.5.13 -> تنفيذ ترحيل سجل المشروع الكامل -> 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
# db version v5.0.24
```

مستخدمو Docker Compose:

```bash
docker compose exec mongo mongod --version
# db version v5.0.24
```

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

مستخدمو Overleaf Toolkit:

```bash
bin/mongo
# MongoDB shell version v5.0.24
# ...
# overleaf:PRIMARY> db.adminCommand( { setFeatureCompatibilityVersion: "5.0" } )
# { 
# "ok" : 1,
# ...
# }
overleaf:PRIMARY> exit
# bye
```

{% hint style="info" %}
يمكن لمستخدمي Docker Compose تشغيل `docker compose exec mongo mongosh` للحصول على صدفة وتشغيل الأوامر نفسها التي يستخدمها مستخدمو 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`. نقوم بذلك بفتح صدفة MongoDB وتشغيل الأمر `db.adminCommand({ setFeatureCompatibilityVersion: "6.0" })` .

مستخدمو Overleaf Toolkit:

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

سنقوم بعد ذلك بإيقاف مثيلي 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`. نقوم بذلك بفتح صدفة 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
# bye
```

سنقوم بعد ذلك بإيقاف مثيلي 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` لبدء صدفة 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". انسخ الدالة أدناه والصقها في الصدفة ثم اضغط مفتاح الإدخال

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

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

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

# اكتب exit ثم اضغط Enter للخروج من صدفة 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://overleaf-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.
