MongoDB
1. Visión General
El componente MongoDB (mongodb) conecta el flujo a una base de datos MongoDB, permitiendo buscar, insertar, actualizar, eliminar y agregar documentos en una colección.
Úsalo cuando el flujo necesita leer o grabar datos en una base MongoDB. Solo funciona como acción de salida — no puede usarse como disparador de entrada (MongoDB no "dispara" el flujo, es consultado por él).
2. Prerrequisitos
- Un servidor MongoDB accesible por la plataforma (host y puerto).
- Usuario y contraseña con permiso de acceso a la base de datos deseada (si la autenticación está habilitada en MongoDB).
- Conectividad de red hasta el/los host(s) de MongoDB.
3. Autenticación y Conexión
| Campo | Obligatorio | Tipo | Descripción | Ejemplo |
|---|---|---|---|---|
hosts | Sí, en la práctica | Texto | Lista de hosts de MongoDB, separados por coma. | "mongo1:27017,mongo2:27017" |
database | Sí, en la práctica | Texto | Nombre de la base de datos. | "clientes" |
username | No | Texto | Usuario para la autenticación. | "app_user" |
password | No | Texto | Contraseña del usuario. | "micontrasena" |
authSource | No | Texto | Base de datos usada para autenticar al usuario. Valor por defecto: "admin". | "admin" |
replicaSet | No | Texto | Nombre del replica set, si corresponde. | "rs0" |
tls | No | Texto ("true"/"false") | Habilita la conexión cifrada (TLS). Valor por defecto: "false". | "true" |
srv | No | Texto ("true"/"false") | Si es true, usa el esquema de conexión mongodb+srv:// (descubrimiento vía DNS), en lugar del esquema tradicional. Valor por defecto: "false". | "true" |
4. Configuración / Operaciones Soportadas
| Campo | Obligatorio | Tipo | Descripción | Ejemplo |
|---|---|---|---|---|
collection | Sí | Texto | Nombre de la colección MongoDB a usar. | "clientes" |
operation | Sí | Texto: FIND, AGGREGATE, COUNT, INSERT, UPDATE, UPDATE_ALL, DELETE, DELETE_ALL, COLLECTION_STATS | Operación a ejecutar en la colección. | "FIND" |
variables | No | Texto (JSON) | Mapa de valores para reemplazar marcadores con formato :nombre dentro de query, filter, document, update o aggregate. | {"idCliente": 123} |
Campos por operación
| Operación | Campos | Descripción |
|---|---|---|
FIND | query (opcional), limit (opcional), skip (opcional), sort (opcional) | Busca documentos que coinciden con el filtro query. Respuesta: lista de documentos en JSON. |
AGGREGATE | aggregate (opcional) | Ejecuta un pipeline de agregación. Respuesta: lista de resultados en JSON. |
COUNT | query (opcional) | Cuenta documentos que coinciden con el filtro. Respuesta: {"count": N}. |
INSERT | document (obligatorio) | Inserta un documento en la colección. Respuesta: documento insertado (con _id). |
UPDATE | filter (obligatorio), update (obligatorio), multiUpdateEnabled (opcional, por defecto "true"), upsert (opcional, por defecto "false") | Actualiza los documentos que coinciden con filter. |
UPDATE_ALL | update (obligatorio), multiUpdateEnabled (opcional, por defecto "true") | Actualiza todos los documentos de la colección. |
DELETE | filter (obligatorio) | Elimina los documentos que coinciden con filter. |
DELETE_ALL | — | Elimina todos los documentos de la colección. |
COLLECTION_STATS | — | Devuelve estadísticas de la colección. |
5. Ejemplos Prácticos
Ejemplo simple: buscar clientes de una ciudad específica.
Entrada:
{
"cidade": "São Paulo"
}
Configuración del componente:
{
"componentName": "mongodb",
"configurations": {
"collection": "clientes",
"operation": "FIND",
"query": "{\"cidade\": \":cidade\"}",
"variables": "{\"cidade\": \"{$.body.cidade}\"}",
"limit": "10"
}
}
Respuesta:
[
{ "_id": "64f1a2b3c4d5e6f7a8b9c0d1", "nome": "Maria Silva", "cidade": "São Paulo" },
{ "_id": "64f1a2b3c4d5e6f7a8b9c0d2", "nome": "João Souza", "cidade": "São Paulo" }
]
Ejemplo avanzado: actualizar el estado de un pedido específico, usando filter/update con variables.
Entrada:
{
"pedidoId": "981",
"novoStatus": "enviado"
}
Configuración del componente:
{
"componentName": "mongodb",
"configurations": {
"collection": "pedidos",
"operation": "UPDATE",
"filter": "{\"pedidoId\": \":id\"}",
"update": "{\"$set\": {\"status\": \":status\"}}",
"variables": "{\"id\": \"{$.body.pedidoId}\", \"status\": \"{$.body.novoStatus}\"}",
"multiUpdateEnabled": "false"
}
}
Respuesta:
{
"matchedCount": 1,
"modifiedCount": 1
}
6. Errores Comunes y Troubleshooting
| Error / Síntoma | Causa probable | Cómo resolverlo |
|---|---|---|
| "Connector IN Not supported for mongodb" | Intento de usar MongoDB como disparador de entrada. | Usar el componente solo como acción de salida en el flujo. |
| "Collection empty." | El campo collection no fue completado. | Completar collection con el nombre de la colección. |
| "Document empty" | Operación INSERT sin el campo document. | Completar document con el JSON a insertar. |
| "Filter empty" | Operación UPDATE o DELETE sin el campo filter. | Completar filter con el criterio de búsqueda. |
| "Update empty" | Operación UPDATE/UPDATE_ALL sin el campo update. | Completar update con el operador de actualización (ej.: $set). |
| "Operation [valor] not found" | El campo operation no corresponde a ninguna operación soportada. | Usar uno de los valores válidos: FIND, AGGREGATE, COUNT, INSERT, UPDATE, UPDATE_ALL, DELETE, DELETE_ALL, COLLECTION_STATS. |
Variables no reemplazadas en query/filter/update | El JSON de variables está malformado (en ese caso simplemente se ignora, sin interrumpir el flujo). | Validar el formato JSON de variables. |