QUERY SQL
QUERY MONGODB
// La query MongoDB comparirà qui...
// Prova un esempio

Che cos'è questo convertitore da SQL a MongoDB?

Questo strumento traduce le query SQL standard nella sintassi equivalente di MongoDB, database NoSQL orientato ai documenti. È pensato per chi sta migrando da un database relazionale o lavora contemporaneamente con entrambi i mondi.

Scrivi la query SQL nel pannello di sinistra e la query MongoDB corrispondente compare accanto. L'analisi è affidata a un vero parser SQL, quindi anche clausole WHERE complesse e aggregazioni di base vengono convertite correttamente, non approssimate.

Il convertitore si appoggia a una libreria di parsing SQL, che gli permette di gestire un'ampia gamma di istruzioni:

SELECT

find() — query di base

La selezione delle colonne e le condizioni WHERE diventano una chiamata find() di MongoDB con filtro di query e proiezione.

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 diventa sort(), LIMIT diventa limit() e OFFSET diventa 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 insieme alle funzioni di aggregazione (COUNT, SUM, AVG, MIN, MAX) viene tradotto in una aggregation pipeline di MongoDB.

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

HAVING → $match dopo $group

Un filtro HAVING diventa un secondo stage $match nella pipeline, applicato dopo il raggruppamento.

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

LIKE → $regex

I pattern LIKE che usano % (qualsiasi sequenza di caratteri) e _ (un singolo carattere) vengono convertiti in espressioni regolari 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

Supporto completo per IN/$in, NOT IN/$nin, IS NULL, IS NOT NULL/$ne, AND/$and e OR/$or, comprese le parentesi per raggruppare le condizioni.

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 di una sola riga diventa insertOne(), un INSERT multiriga diventa insertMany(). I nomi delle colonne diventano nomi dei campi del documento.

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

updateMany() con $set

La clausola SET diventa l'operatore $set di MongoDB e la condizione WHERE diventa il documento di filtro.

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

deleteMany()

DELETE FROM con una condizione WHERE diventa deleteMany(). Da usare con attenzione: senza WHERE vengono eliminati tutti i documenti.

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

Riferimento operatori SQL → MongoDB

Operatore SQL Operatore MongoDB Note
=$eq (or implicit)Corrispondenza esatta
!= / <>$neDiverso da
>$gtMaggiore di
>=$gteMaggiore o uguale a
<$ltMinore di
<=$lteMinore o uguale a
IN (...)$inValore presente nella lista
NOT IN (...)$ninValore non presente nella lista
LIKE '%x%'$regex: /.*x.*/% diventa .*, _ diventa .
NOT LIKE$not: /pattern/Espressione regolare negata
IS NULLfield: nullInclude anche i campi assenti
IS NOT NULL$ne: nullIl campo esiste e non è null
AND$andTutte le condizioni devono essere vere
OR$orBasta che una condizione sia vera
COUNT(*)$sum: 1All'interno dello stage $group
SUM(f)$sum: "$f"All'interno dello stage $group
AVG(f)$avg: "$f"All'interno dello stage $group
MIN(f)$min: "$f"All'interno dello stage $group
MAX(f)$max: "$f"All'interno dello stage $group
ORDER BY ASCsort({ f: 1 })Crescente
ORDER BY DESCsort({ f: -1 })Decrescente
LIMIT nlimit(n)
OFFSET nskip(n)

Perché convertire da SQL a MongoDB?

Migrazione del database

Stai passando da MySQL, PostgreSQL, SQL Server o SQLite a MongoDB? Traduci rapidamente la logica delle query esistenti e riduci il rischio di errori durante la migrazione.

Imparare MongoDB

Se conosci già SQL, vedere ogni concetto affiancato al suo equivalente è la strada più rapida per imparare il linguaggio di query di MongoDB e il modello a documenti che c'è dietro.

Sviluppo quotidiano

Anche chi usa MongoDB da anni spesso ragiona prima in SQL. Usa il convertitore come riferimento veloce per trasformare quel modello mentale nella sintassi corretta.

Lavoro in team

Condividi le query convertite con colleghi che provengono dal mondo relazionale. Un riferimento comune elimina gli attriti tra due culture di database diverse.

Domande frequenti

Come si converte una query SQL in MongoDB?

Incolla l'istruzione SQL nel pannello di input e premi Converti. Lo strumento analizza l'SQL e restituisce il comando equivalente per la shell MongoDB: SELECT diventa find(), le condizioni WHERE diventano un filtro di query, ORDER BY diventa sort() e LIMIT e OFFSET diventano limit() e skip(). Non serve registrarsi né installare nulla.

Qual è l'equivalente MongoDB di LIKE in SQL?

MongoDB non ha la parola chiave LIKE: la ricerca per pattern si fa con $regex. Il carattere jolly % di SQL diventa .* e il carattere _ diventa un singolo punto. Quindi WHERE name LIKE '%mongo%' si converte in { name: { $regex: /.*mongo.*/ } }, mentre NOT LIKE viene racchiuso in $not.

Qual è l'equivalente MongoDB di GROUP BY?

GROUP BY corrisponde a una aggregation pipeline con uno stage $group. Le colonne raggruppate diventano l'_id di quello stage e le funzioni di aggregazione diventano accumulatori: COUNT(*) diventa { $sum: 1 }, SUM(campo) diventa { $sum: "$campo" }, mentre AVG, MIN e MAX corrispondono a $avg, $min e $max. Una clausola HAVING diventa un secondo stage $match collocato dopo $group.

Il convertitore supporta le JOIN SQL?

Non in automatico. Una JOIN in MongoDB richiede uno stage $lookup e una decisione su come modellare i dati collegati, se incorporati o referenziati: dipende dal disegno dello schema, non dall'SQL di partenza. Converti qui le query su una sola tabella e aggiungi tu lo stage $lookup.

Posso migrare i dati da MySQL o SQL Server a MongoDB con questo strumento?

No. Questo convertitore traduce la sintassi delle query, non i dati. Per spostare le righe serve uno strumento di migrazione come MongoDB Relational Migrator, che è gratuito e supporta Oracle, SQL Server, MySQL e PostgreSQL. Usa questo convertitore in parallelo per tradurre le query già presenti nel codice della tua applicazione.

Questo convertitore da SQL a MongoDB è gratuito?

Sì. Lo strumento è completamente gratuito, funziona nel browser, non richiede alcun account e non conserva le tue query. È disponibile in inglese, italiano, russo, cinese, francese e spagnolo.

Stai pianificando una migrazione, non solo una query?

Convertire le query è l'ultimo passo. Queste guide affrontano la parte che decide l'esito di una migrazione: come ridisegnare uno schema relazionale in documenti.