Logo de QANode

Nodo MongoDB

El nodo MongoDB permite realizar operaciones en una base de datos MongoDB, incluyendo consultas, inserciones, actualizaciones, eliminaciones y aggregation pipelines.


Descripción General

PropiedadValor
Tipomongodb-query
CategoríaBase de Datos
Color🟢 Verde (#22c55e)
Entradain
Salidaout

Conexión

Usando Credenciales Guardadas (Recomendado)

Seleccione una credencial de tipo MongoDB.

Configuración Manual

CampoTipoDescripción
URIstringCadena de conexión MongoDB
Base de DatosstringNombre de la base de datos
ColecciónstringNombre de la colección

URIs de ejemplo:

mongodb://usuario:contraseña@host:27017/basedatos?authSource=admin
mongodb+srv://usuario:contraseña@cluster.ejemplo.mongodb.net/basedatos

Operaciones

find

Busca múltiples documentos.

CampoTipoDescripción
FiltroJSONCriterios de búsqueda
LímitenumberMáximo de documentos (predeterminado: 20)
OpcionesJSONProyección, sort, etc.

Ejemplo:

// Filtro
{ "active": true, "age": { "$gte": 18 } }

// Opciones
{ "sort": { "name": 1 }, "projection": { "name": 1, "email": 1 } }

findOne

Busca un único documento.

CampoTipoDescripción
FiltroJSONCriterios de búsqueda

Ejemplo:

{ "_id": "abc123" }
{ "email": "juan@ejemplo.com" }

insertOne

Inserta un nuevo documento.

CampoTipoDescripción
DocumentoJSONDocumento a ser insertado

Ejemplo:

{
  "name": "Juan",
  "email": "juan@ejemplo.com",
  "createdAt": "{{ new Date().toISOString() }}"
}

updateOne

Actualiza un documento existente.

CampoTipoDescripción
FiltroJSONCriterios para encontrar el documento
UpdateJSONOperaciones de actualización

Ejemplo:

// Filtro
{ "_id": "abc123" }

// Update
{ "$set": { "active": false, "updatedAt": "2024-01-01" } }

deleteOne

Elimina un documento.

CampoTipoDescripción
FiltroJSONCriterios para encontrar el documento

Ejemplo:

{ "email": "eliminar@ejemplo.com" }

aggregate

Ejecuta un aggregation pipeline.

CampoTipoDescripción
PipelineJSONArray de etapas
LímitenumberMáximo de resultados

Ejemplo:

[
  { "$match": { "status": "active" } },
  { "$group": { "_id": "$department", "count": { "$sum": 1 } } },
  { "$sort": { "count": -1 } }
]

Outputs

OutputTipoDescripción
documentsarrayDocumentos retornados (find, aggregate)
documentanyDocumento único (findOne)
resultobjectResultado de la operación (insert, update, delete)

Accediendo a los Outputs

// Lista de documentos
{{ steps.mongo.outputs.documents }}

// Primer documento
{{ steps.mongo.outputs.documents[0].name }}

// Documento único
{{ steps.mongo.outputs.document.email }}

// Resultado de insert
{{ steps.mongo.outputs.result.insertedId }}

// Resultado de update
{{ steps.mongo.outputs.result.modifiedCount }}

Ejemplos Prácticos

Verificar datos después de una llamada a la API

[HTTP Request: POST /api/products]
    │
    ▼
[MongoDB: findOne → { "sku": "{{ steps.api.outputs.json.sku }}" }]
    │
    ▼
[If: {{ steps.mongo.outputs.document }} !== null]
    │ true → [Log: "Producto creado: {{ steps.mongo.outputs.document.name }}"]

Preparar datos de prueba

[MongoDB: insertOne → { "name": "Test User", "role": "tester" }]
    │
    ▼
[HTTP Request: GET /api/users/{{ steps.insert.outputs.result.insertedId }}]

Reporte con aggregation

[MongoDB: aggregate → [
    { "$match": { "date": { "$gte": "2024-01-01" } } },
    { "$group": { "_id": "$status", "count": { "$sum": 1 } } }
]]
    │
    ▼
[Log: "Resultados: {{ JSON.stringify(steps.aggregate.outputs.documents) }}"]

Consejos

  • El campo Filtro acepta todos los operadores MongoDB ($eq, $ne, $gt, $in, $regex, etc.)
  • Use expresiones {{ }} en los valores del JSON para inyectar datos dinámicos
  • El límite predeterminado de 20 documentos puede modificarse para evitar retornar datos excesivos
  • Para operaciones complejas, use aggregation pipelines
  • Pruebe la conexión en la pantalla de credenciales antes de usarla en el flujo