CONSULTA SQL
CONSULTA MONGODB
// La consulta MongoDB aparecerá aquí...
// Prueba un ejemplo

¿Qué es este convertidor de SQL a MongoDB?

Esta herramienta traduce consultas SQL estándar a la sintaxis equivalente de MongoDB, una base de datos NoSQL orientada a documentos. Está pensada para quienes migran desde una base de datos relacional o trabajan con ambos mundos a la vez.

Escribe tu consulta SQL en el panel de entrada y la consulta MongoDB correspondiente aparece al lado. El análisis lo realiza un parser SQL real, así que incluso las cláusulas WHERE complejas y las agregaciones básicas se convierten correctamente en lugar de aproximarse.

El convertidor se apoya en una librería de análisis de SQL, lo que le permite manejar una amplia variedad de sentencias:

SELECT

find() — consulta básica

La selección de columnas y las condiciones WHERE se convierten en una llamada find() de MongoDB con filtro de consulta y proyección.

SELECT name, age FROM users WHERE age > 25 db.users.find( { age: { $gt: 25 } }, { name: 1, age: 1, _id: 0 } )
SELECT

sort(), limit(), skip()

ORDER BY se convierte en sort(), LIMIT en limit() y OFFSET en skip().

SELECT * FROM products ORDER BY price DESC LIMIT 10 OFFSET 20 db.products.find({}) .sort({ price: -1 }) .skip(20).limit(10)
AGGREGATE

GROUP BY → aggregate()

GROUP BY junto con funciones de agregación (COUNT, SUM, AVG, MIN, MAX) se traduce en un pipeline de agregación de MongoDB.

SELECT country, COUNT(*) AS total FROM users GROUP BY country db.users.aggregate([ { $group: { _id: { country: "$country" }, total: { $sum: 1 } } } ])
AGGREGATE

HAVING → $match después de $group

Un filtro HAVING se convierte en una segunda etapa $match del pipeline, aplicada después de la agrupación.

SELECT category, AVG(price) AS avg_p FROM products GROUP BY category HAVING AVG(price) > 50 → pipeline with $group then $match
WHERE

LIKE → $regex

Los patrones LIKE de SQL que usan % (cualquier secuencia de caracteres) y _ (un solo carácter) se convierten en expresiones regulares de MongoDB.

WHERE name LIKE '%mongo%' { name: { $regex: /.*mongo.*/ } } WHERE code LIKE 'IT_' { code: { $regex: /^IT.$/ } } NOT LIKE { field: { $not: /pattern/ } }
WHERE

IN, IS NULL, AND/OR

Compatibilidad completa con IN/$in, NOT IN/$nin, IS NULL, IS NOT NULL/$ne, AND/$and y OR/$or, incluidos los paréntesis para agrupar condiciones.

WHERE status IN ('a','b') { status: { $in: ["a","b"] } } WHERE deleted_at IS NULL { deleted_at: null } WHERE a=1 AND b=2 { $and: [{a:1},{b:2}] }
INSERT

insertOne() / insertMany()

Un INSERT de una sola fila se convierte en insertOne(); un INSERT de varias filas, en insertMany(). Los nombres de columna pasan a ser nombres de campo del documento.

INSERT INTO users (name, age) VALUES ('Alice', 30) db.users.insertOne({ name: "Alice", age: 30 })
UPDATE

updateMany() con $set

La cláusula SET se convierte en el operador $set de MongoDB y la condición WHERE pasa a ser el documento de filtro.

UPDATE users SET status = 'active' WHERE id = 42 db.users.updateMany( { id: 42 }, { $set: { status: "active" } } )
DELETE

deleteMany()

DELETE FROM con una condición WHERE se convierte en deleteMany(). Úsalo con cuidado: sin WHERE se eliminan todos los documentos.

DELETE FROM sessions WHERE expires < '2024-01-01' db.sessions.deleteMany({ expires: { $lt: "2024-01-01" } })

Referencia de operadores SQL → MongoDB

Operador SQL Operador MongoDB Notas
=$eq (or implicit)Coincidencia exacta
!= / <>$neDistinto de
>$gtMayor que
>=$gteMayor o igual que
<$ltMenor que
<=$lteMenor o igual que
IN (...)$inValor incluido en la lista
NOT IN (...)$ninValor no incluido en la lista
LIKE '%x%'$regex: /.*x.*/% pasa a .*, _ pasa a .
NOT LIKE$not: /pattern/Expresión regular negada
IS NULLfield: nullIncluye también los campos ausentes
IS NOT NULL$ne: nullEl campo existe y no es null
AND$andTodas las condiciones deben cumplirse
OR$orBasta con que se cumpla una condición
COUNT(*)$sum: 1Dentro de la etapa $group
SUM(f)$sum: "$f"Dentro de la etapa $group
AVG(f)$avg: "$f"Dentro de la etapa $group
MIN(f)$min: "$f"Dentro de la etapa $group
MAX(f)$max: "$f"Dentro de la etapa $group
ORDER BY ASCsort({ f: 1 })Ascendente
ORDER BY DESCsort({ f: -1 })Descendente
LIMIT nlimit(n)
OFFSET nskip(n)

¿Por qué convertir de SQL a MongoDB?

Migración de base de datos

¿Estás pasando de MySQL, PostgreSQL, SQL Server o SQLite a MongoDB? Traduce rápidamente la lógica de tus consultas y reduce el riesgo de errores durante la migración.

Aprender MongoDB

Si ya conoces SQL, ver cada concepto junto a su equivalente es el camino más rápido para dominar el lenguaje de consultas de MongoDB y el modelo de documentos que hay detrás.

Desarrollo diario

Incluso quien lleva años usando MongoDB suele pensar primero en SQL. Usa el convertidor como referencia rápida para traducir ese modelo mental a la sintaxis correcta.

Trabajo en equipo

Comparte las consultas convertidas con compañeros que vienen del mundo relacional. Una referencia común elimina fricciones entre dos culturas de base de datos distintas.

Preguntas frecuentes

¿Cómo se convierte una consulta SQL a MongoDB?

Pega tu sentencia SQL en el panel de entrada y pulsa Convertir. La herramienta analiza el SQL y devuelve el comando equivalente para la shell de MongoDB: SELECT se convierte en find(), las condiciones WHERE pasan a ser un filtro de consulta, ORDER BY se convierte en sort() y LIMIT y OFFSET en limit() y skip(). No hace falta registrarse ni instalar nada.

¿Cuál es el equivalente de LIKE de SQL en MongoDB?

MongoDB no tiene la palabra clave LIKE: la búsqueda por patrones se hace con $regex. El comodín % de SQL pasa a ser .* y el comodín _ pasa a ser un solo punto. Así, WHERE name LIKE '%mongo%' se convierte en { name: { $regex: /.*mongo.*/ } }, y NOT LIKE se envuelve en $not.

¿Cuál es el equivalente de GROUP BY en MongoDB?

GROUP BY se corresponde con un pipeline de agregación que incluye una etapa $group. Las columnas agrupadas pasan a ser el _id de esa etapa y las funciones de agregación se convierten en acumuladores: COUNT(*) pasa a { $sum: 1 }, SUM(campo) pasa a { $sum: "$campo" }, y AVG, MIN y MAX se corresponden con $avg, $min y $max. Una cláusula HAVING se convierte en una segunda etapa $match colocada después de $group.

¿Este convertidor admite JOIN de SQL?

No de forma automática. Un JOIN en MongoDB requiere una etapa $lookup y una decisión sobre si los datos relacionados deben incrustarse o referenciarse, y eso depende del diseño de tu esquema, no solo del SQL. Convierte aquí las consultas de una sola tabla y añade tú la etapa $lookup.

¿Puedo migrar datos de MySQL o SQL Server a MongoDB con esta herramienta?

No. Este convertidor traduce la sintaxis de las consultas, no los datos. Para mover las filas necesitas una herramienta de migración como MongoDB Relational Migrator, que es gratuita y admite Oracle, SQL Server, MySQL y PostgreSQL. Usa este convertidor en paralelo para traducir las consultas que ya están en el código de tu aplicación.

¿Este convertidor de SQL a MongoDB es gratuito?

Sí. La herramienta es totalmente gratuita, funciona en el navegador, no requiere cuenta y no guarda ninguna de tus consultas. Está disponible en inglés, italiano, ruso, chino, francés y español.

¿Estás planificando una migración, no solo una consulta?

Convertir las consultas es el último paso. Estas guías abordan la parte que decide el éxito de una migración: cómo rediseñar un esquema relacional en documentos.