> 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/es/mantenimiento/updating-mongodb.md).

# Actualizar MongoDB

{% hint style="info" %}
Cualquier nueva versión de Server CE/Server Pro indicará cualquier cambio en la versión compatible de MongoDB en sus [notas de la versión](https://docs.overleaf.com/on-premises/release-notes).
{% endhint %}

### ¿Debería actualizar MongoDB?

Deberías **solo** considerar actualizar tu versión de MongoDB si estás planeando actualizar tu instancia de Server CE/Server Pro.

Si estás ejecutando una versión de MongoDB más nueva que la recomendada para tu versión actual (o de destino), no hace falta hacer ningún cambio.

{% hint style="warning" %}
Nunca debes degradar tu versión de MongoDB.
{% endhint %}

Si experimentas un problema específico que crees que podría estar relacionado con tu versión actual de MongoDB, no dudes en [abrir un problema](https://github.com/overleaf/overleaf/issues) si eres usuario de Server CE o contactar con el soporte de Overleaf si eres usuario de Server Pro.

### Comprobando tu versión de MongoDB

Abrir la `mongo` shell debería mostrar inmediatamente la versión actual.

Usuarios de Overleaf Toolkit:

```bash
bin/docker-compose exec mongo mongod --version
db version v5.0.24
Información de compilación: {
    "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"
    }
}
```

Usuarios de Docker Compose:

```bash
docker compose exec mongo mongod --version
db version v5.0.24
Información de compilación: {
    "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"
    }
}

```

### Proceso de actualización

La actualización de la versión de MongoDB durante una actualización de tu instancia de Server CE/Server Pro es la siguiente:

1. Decide la versión de Server CE/Server Pro a la que planeas actualizar.
2. Encuentra la versión de MongoDB recomendada por esa versión específica de Overleaf Server CE/Server Pro.
3. Sigue las instrucciones para actualizar MongoDB a la versión de destino.
4. Actualiza la versión de la imagen de Server CE/Server Pro y reinicia la instancia.

Nuestra recomendación es actualizar siempre **Server CE/Server Pro** a la última versión disponible, ya que siempre se garantiza que sea compatible (solo usuarios de Server Pro).

{% hint style="danger" %}
Al realizar una actualización de Server CE/Pro, recomendamos actualizar a la última versión de la versión principal desplegada **antes de** actualizar a la última versión de la **siguiente** versión principal. Si tu despliegue está más de una versión principal por detrás de la última, tendrás que realizar una actualización en varios pasos.

Por ejemplo, si estás ejecutando 3.5.10, tendrás que actualizar a 3.5.13 -> realizar la migración del historial completo del proyecto -> 4.2.9 -> 5.5.4.

Deberías **nunca** saltar versiones principales (3.5.10 -> 5.5.4). Si estás usando el Toolkit y estás más de una versión principal por detrás de la última, debes **no** usar el `bin/upgrade` script, ya que tendrás que realizar una actualización manual en varios pasos.
{% endhint %}

{% hint style="warning" %}
Es importante asegurarse de realizar una [copia de seguridad coherente](/on-premises/es/mantenimiento/data-and-backups.md#performing-a-consistent-backup) **antes de** en cada actualización de versión principal para permitirte volver atrás si lo necesitas.
{% endhint %}

#### Información de compatibilidad de versiones

En caso de que decidas ir a una versión anterior, esta tabla muestra la versión recomendada de MongoDB para versiones anteriores de Server CE/Server Pro, pero no deberías **nunca** degradar tu versión de MongoDB.

<table><thead><tr><th width="175">Server CE/Server Pro</th><th width="139" align="center">Versión de MongoDB</th><th align="center">Versión mínima de compatibilidad de funcionalidades</th><th align="center">Versión máxima compatible con el controlador de 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 a 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" %}
La versión mínima de compatibilidad de funcionalidades anterior se basa en la versión de MongoDB correspondiente recomendada para usar con la versión de Overleaf mostrada. Si planeas usar una versión superior, MongoDB tendrá su propio requisito mínimo.
{% endhint %}

Puedes ver la tabla de compatibilidad que especifica las versiones compatibles del controlador MongoDB Node.js para usar con MongoDB [aquí](https://www.mongodb.com/docs/drivers/node/current/reference/compatibility/).

Puedes ver el estado de fin de vida de cada versión de MongoDB [aquí](https://endoflife.date/mongodb).

#### Actualizando MongoDB

MongoDB requiere **actualizaciones paso a paso**. Eso significa que no puedes pasar directamente de, por ejemplo `4.0` a `5.0`. Primero necesitas actualizar `4.2` a `4.4`, y luego `5.0`.

{% hint style="info" %}
MongoDB utiliza números pares para sus versiones estables.
{% endhint %}

#### **Instrucciones de actualización al ejecutar MongoDB fuera de Docker**

Aquí tienes enlaces a las instrucciones de actualización de mongodb.com al actualizar MongoDB.

* [Notas de la versión de MongoDB: actualización de MongoDB desde `4.2` a `4.4`](https://www.mongodb.com/docs/v4.4/release-notes/4.4-upgrade-standalone/)
* [Notas de la versión de MongoDB: actualización de MongoDB desde `4.4` a `5.0`](https://www.mongodb.com/docs/v5.0/release-notes/5.0-upgrade-replica-set/)
* [Notas de la versión de MongoDB: actualización de MongoDB desde `5.0` a `6.0`](https://www.mongodb.com/docs/v6.0/release-notes/6.0-upgrade-replica-set/)
* [Notas de la versión de MongoDB: actualización de MongoDB desde `6.0` a `7.0`](https://www.mongodb.com/docs/manual/release-notes/7.0-upgrade-replica-set/#std-label-7.0-upgrade-replica-set)
* [Notas de la versión de MongoDB: actualización de MongoDB desde `7.0` a `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" %}
Instrucciones para `5.0` y superiores apuntan a una instalación de conjunto de réplicas, en lugar de independiente. Como Server Pro/CE 4.0.1+ usa transacciones, MongoDB necesita ejecutarse como un conjunto de réplicas.
{% endhint %}

{% hint style="warning" %}
La documentación de MongoDB 3.2 a 4.2 ahora está disponible a través de <https://www.mongodb.com/docs/legacy/>
{% endhint %}

**Instrucciones básicas**

En la mayoría de los casos la actualización requiere configurar una bandera de compatibilidad antes de actualizar realmente la versión de mongo. Los pasos son los siguientes:

1. Configura la bandera de compatibilidad como se describe en las notas de la versión de MongoDB (consulta los ejemplos siguientes).
2. Luego actualiza la imagen de mongo:
   1. **Usuarios de Toolkit** Actualiza `MONGO_VERSION`, por ejemplo `MONGO_VERSION=6.0`
   2. **Usuarios de Docker Compose** Actualiza la versión de la `mongo` etiqueta de imagen,\
      por ejemplo `services -> mongo -> image: mongo:6.0`;

**Ejemplo: actualización de MongoDB desde `5.0` a `6.0`**

Empecemos asegurándonos de que estamos ejecutando MongoDB `6.0`:

Usuarios de Overleaf Toolkit:

```bash
bin/docker-compose exec mongo mongod --version
# versión de la db v5.0.24
```

Usuarios de Docker Compose:

```bash
docker compose exec mongo mongod --version
# versión de la db v5.0.24
```

Según las [instrucciones de actualización](https://docs.mongodb.com/manual/release-notes/3.6-upgrade-standalone/#upgrade-version-path), el único requisito es tener `featureCompatibilityVersion` establecida en `5.0`. Lo hacemos abriendo una shell de MongoDB y ejecutando el comando indicado:

Usuarios de Overleaf Toolkit:

```bash
bin/mongo
# versión de la shell de MongoDB v5.0.24
# ...
# overleaf:PRIMARY> db.adminCommand( { setFeatureCompatibilityVersion: "5.0" } )
# { 
# "ok" : 1,
# ...
# }
overleaf:PRIMARY> exit
# adiós
```

{% hint style="info" %}
Los usuarios de Docker Compose pueden ejecutar `docker compose exec mongo mongosh` para obtener una shell y ejecutar los mismos comandos que los usuarios de Toolkit.
{% endhint %}

Usuarios de Overleaf Toolkit:

Luego detendremos las instancias de Server CE/Server Pro y MongoDB usando el `bin/stop` comando, estableceremos `MONGO_VERSION=6.0` en `config/overleaf.rc`, y luego reiniciaremos el `mongo` servicio usando `bin/up mongo`) para verificar que la actualización se realizó sin problemas.

Por último, actualizaremos la versión de la imagen de Server CE/Server Pro a nuestra versión de destino y recrearemos todos los servicios usando el `bin/up -d` comando.

Usuarios de Docker Compose:

Luego detendremos las instancias de Server CE/Server Pro y MongoDB usando el `docker compose stop` comando, actualiza [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) archivo para usar `image: mongo:6.0`, y luego reiniciaremos el `mongo` servicio usando el `docker compose up mongo` comando para verificar que la actualización se realizó sin problemas.

Por último, actualizaremos la versión de la imagen de Server CE/Server Pro a nuestra versión de destino y recrearemos todos los servicios usando el `docker compose up` comando.

**Ejemplo: actualización de MongoDB desde `6.0` a `7.0` (usuarios de Toolkit)**

Empieza asegurándote de que estás ejecutando MongoDB `6.0` usando los `mongod --version` comandos anteriores.

Según las [instrucciones de actualización](https://www.mongodb.com/docs/manual/release-notes/7.0-upgrade-replica-set/#std-label-7.0-upgrade-replica-set), el único requisito es tener `featureCompatibilityVersion` establecida en `6.0`. Lo hacemos abriendo una shell de MongoDB y ejecutando el comando `db.adminCommand({ setFeatureCompatibilityVersion: "6.0" })` .

Usuarios de Overleaf Toolkit:

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

Luego detendremos las instancias de Server CE/Server Pro y MongoDB usando el `bin/stop` comando, estableceremos `MONGO_VERSION=7.0` en `config/overleaf.rc`, y luego reiniciaremos el `mongo` servicio usando `bin/up mongo`) para verificar que la actualización se realizó sin problemas.

Por último, actualizaremos la versión de la imagen de Server CE/Server Pro a nuestra versión de destino y recrearemos todos los servicios usando el `bin/up -d` comando.

**Ejemplo: actualización de MongoDB desde `7.0` a `8.0` (usuarios de Toolkit)**

Empieza asegurándote de que estás ejecutando MongoDB `7.0` usando los `mongod --version` comandos anteriores.

Según las [instrucciones de actualización](https://www.mongodb.com/docs/manual/release-notes/8.0-upgrade-replica-set/#std-label-8.0-upgrade-replica-set), el único requisito es tener `featureCompatibilityVersion` establecida en `7.0`. Lo hacemos abriendo una shell de MongoDB y ejecutando el comando `db.adminCommand({ setFeatureCompatibilityVersion: "7.0", confirm: true })`. Ten en cuenta que ahora requiere un `confirm: true` adicional.

```bash
bin/mongo
# ...
# overleaf:PRIMARY> db.adminCommand( { setFeatureCompatibilityVersion: "7.0", confirm: true } )
# { 
# "ok" : 1,
# ...
# }
overleaf:PRIMARY> exit
# adiós
```

Luego detendremos las instancias de Server CE/Server Pro y MongoDB usando el `bin/stop` comando, estableceremos `MONGO_VERSION=8.0` en `config/overleaf.rc`, y luego reiniciaremos el `mongo` servicio usando `bin/up mongo`) para verificar que la actualización se realizó sin problemas.

Por último, actualizaremos la versión de la imagen de Server CE/Server Pro a nuestra versión de destino y recrearemos todos los servicios usando el `bin/up -d` comando.

#### Comandos equivalentes para usuarios de docker compose

Para usuarios de docker compose, los comandos equivalentes son:

* `docker compose exec mongo mongod --version` para mostrar la versión de mongo
* `docker compose exec mongo mongosh` para iniciar una shell de mongo para comandos de administrador
* `docker compose stop` comando para detener el servidor
* Edita el [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) archivo para usar `image: mongo:6.0` para actualizar la versión de mongo
* `docker compose up mongo` para reiniciar el servicio de mongo y verificar que la actualización se realizó sin problemas
* Edita el [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) archivo para usar `image: sharelatex:VERSION` para actualizar la versión de la imagen
* `docker compose up` para recrear todos los servicios.

### Creando un rol personalizado

En la versión `5.5.1`, introdujimos una comprobación de inicio para verificar la versión de compatibilidad de funcionalidades para MongoDB. Si tu base de datos MongoDB usa autenticación (p. ej., autenticación básica), el `sharelatex` contenedor podría no iniciarse, mostrando un error de permiso "*no autorizado en admin para ejecutar el comando*".

Para resolver esto, puedes crear un nuevo rol en MongoDB y asignarlo a la cuenta de usuario utilizada para acceder a la base de datos siguiendo las instrucciones de abajo, o establecer `ALLOW_MONGO_ADMIN_CHECK_FAILURES=true` para permitir que la comprobación falle sin impedir que el despliegue se inicie.

{% hint style="success" %}
Este nuevo rol **solo** otorga permiso para leer parámetros del servidor de MongoDB en todo el clúster y podría reutilizarse con fines de monitoreo,
{% endhint %}

{% code overflow="wrap" %}

```bash
# Usuarios de Toolkit
$ bin/docker-compose exec -it mongo mongosh -u {{YOUR-ADMIN-USERNAME}} -p

# Cambia a la base de datos "admin" usando
overleaf [direct: primary] sharelatex> use admin
cambió a la base de datos admin
overleaf [direct: primary] admin> 

# Crea un nuevo rol con permiso para usar "getParamter". Copia y pega la función siguiente en la shell y presiona la tecla Intro

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

# Vuelve a cambiar a la base de datos "sharelatex" 
use sharelatex
cambió a la base de datos sharelatex
overleaf [direct: primary] sharelatex> 

# Asigna el nuevo rol "clusterParameterReader" a tu usuario de base de datos copiando y pegando la función siguiente en la shell y presionando la tecla Intro 
db.grantRolesToUser(
  "{{YOUR-DATABASE-USER}}",
  [
    { role: "clusterParameterReader", db: "admin" }
  ]
);

# Escribe exit y luego Intro para salir de la shell de MongoDB
# Ejecuta bin/up -d para iniciar la pila de despliegue
$ 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/es/mantenimiento/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.
