> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://help.squarecloud.app/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# Cómo crear una base de datos MongoDB y conectar

## 1. Requisitos previos

Para seguir este tutorial, necesitarás:

* **Plan Standard o superior:** La gestión de bases de datos en Square Cloud es un recurso disponible a partir del plan Standard.
* **Acceso al Dashboard:** Tus credenciales de acceso a la plataforma Square Cloud.

---

## 2. Creando la instancia de base de datos

1.  Accede al [Dashboard de Square Cloud](https://squarecloud.app/pt-br/dashboard).
2.  Accede a la página de [Bases de datos](https://squarecloud.app/pt-br/dashboard/databases) y selecciona la opción **Crear bases de datos**.
3.  Dale un nombre a tu instancia.
4.  Elige **MongoDB** en la lista de bases de datos disponibles.
5.  Selecciona la RAM deseada y confirma la creación.
6.  Tras la inicialización, tendrás acceso a las credenciales fundamentales en una URL: `Host`, `Port`, `User` y `Password`.

---

## 3. Entendiendo los certificados SSL/TLS

La seguridad en MongoDB se realiza a través de protocolos TLS (Transport Layer Security), que validan la identidad del servidor y del cliente.

En la pestaña de configuraciones de tu base de datos, encontrarás:

* **`certificate.pem`**: El archivo combinado que contiene la clave privada y el certificado. Este es el archivo principal para la mayoría de los drivers.
* **`client-key.key`** y **`client-cert.crt`**: Disponibles por separado en caso de que tu infraestructura exija archivos distintos para la clave y para el certificado público.

---

## 4. Configuración técnica de la conexión

En MongoDB, la conexión segura se habilita a través del parámetro `tls`. Al utilizar el archivo `.pem`, debes referenciarlo en dos puntos cruciales del driver de conexión para garantizar la validación mutua:

* **tlsCAFile:** Ruta al `certificate.pem` (valida la autoridad del servidor).
* **tlsCertificateKeyFile:** Ruta al `certificate.pem` (identifica al cliente).
* **tls:** Debe definirse como `true`.

### Ejemplo de Connection String (URI)

```text
mongodb://default:{password}@square-cloud-db-{id}.squareweb.app:{port}/tls=true&tlsCAFile=./certificate.pem&tlsCertificateKeyFile=./certificate.pem
```

---

### Ejemplos de conexiones vía código

Si tu conexión es por los datos separados, basta con seguir los ejemplos a continuación:

* Ejemplo Python:

```python
from pymongo import MongoClient

url_conexao = "mongodb://default:{password}@square-cloud-db-{id}.squareweb.app:{port}"

client = MongoClient(
    url_conexao,
    tlsCertificateKeyFile="certificate.pem",
    tlsCAFile="certificate.pem"
)
```

* Ejemplo JavaScript:

```js
import { MongoClient } from "mongodb";
import fs from "fs";

const uri = "mongodb://default:{password}@square-cloud-db-{id}.squareweb.app:{port}";

const client = new MongoClient(uri, {
  tls: true,
  tlsCertificateKeyFile: "certificate.pem",
  tlsCAFile: "certificate.pem",
});
```

---

## 5. Buenas prácticas y seguridad

* **Archivo .gitignore:** El archivo `certificate.pem` es una credencial de seguridad. Añádelo a tu `.gitignore` de inmediato para evitar filtraciones en repositorios.

---

## Extra

Para una mejor visualización, mira nuestro vídeo tutorial: https://www.youtube.com/watch?v=K9-J6-PO3QU