REQUÊTE SQL
REQUÊTE MONGODB
// La requête MongoDB apparaîtra ici...
// Essayez un exemple

Qu'est-ce que ce convertisseur SQL vers MongoDB ?

Cet outil traduit les requêtes SQL standard vers la syntaxe équivalente de MongoDB, une base de données NoSQL orientée documents. Il s'adresse aux développeurs qui migrent depuis une base relationnelle ou qui travaillent avec les deux mondes en parallèle.

Saisissez votre requête SQL dans le panneau de gauche : la requête MongoDB correspondante s'affiche à côté. L'analyse repose sur un véritable parseur SQL, si bien que les clauses WHERE complexes et les agrégations de base sont converties correctement plutôt qu'approximées.

Le convertisseur s'appuie sur une bibliothèque d'analyse SQL, ce qui lui permet de traiter un large éventail d'instructions :

SELECT

find() — requête de base

La sélection des colonnes et les conditions WHERE deviennent un appel find() de MongoDB avec un filtre de requête et une projection.

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 devient sort(), LIMIT devient limit() et OFFSET devient 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 associé aux fonctions d'agrégation (COUNT, SUM, AVG, MIN, MAX) est traduit en pipeline d'agrégation MongoDB.

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

HAVING → $match après $group

Un filtre HAVING devient une seconde étape $match du pipeline, appliquée après le regroupement.

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

LIKE → $regex

Les motifs LIKE utilisant % (n'importe quelle suite de caractères) et _ (un seul caractère) sont convertis en expressions régulières 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

Prise en charge complète de IN/$in, NOT IN/$nin, IS NULL, IS NOT NULL/$ne, AND/$and et OR/$or, y compris les parenthèses pour grouper les conditions.

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 d'une seule ligne devient insertOne(), un INSERT multiligne devient insertMany(). Les noms de colonnes deviennent les noms de champs du document.

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

updateMany() avec $set

La clause SET devient l'opérateur $set de MongoDB et la condition WHERE devient le document de filtre.

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

deleteMany()

DELETE FROM avec une condition WHERE devient deleteMany(). À manier avec précaution : sans clause WHERE, tous les documents sont supprimés.

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

Référence des opérateurs SQL → MongoDB

Opérateur SQL Opérateur MongoDB Remarques
=$eq (or implicit)Correspondance exacte
!= / <>$neDifférent de
>$gtSupérieur à
>=$gteSupérieur ou égal à
<$ltInférieur à
<=$lteInférieur ou égal à
IN (...)$inValeur présente dans la liste
NOT IN (...)$ninValeur absente de la liste
LIKE '%x%'$regex: /.*x.*/% devient .*, _ devient .
NOT LIKE$not: /pattern/Expression régulière négative
IS NULLfield: nullInclut aussi les champs absents
IS NOT NULL$ne: nullLe champ existe et n'est pas null
AND$andToutes les conditions doivent être vraies
OR$orUne seule condition suffit
COUNT(*)$sum: 1Dans l'étape $group
SUM(f)$sum: "$f"Dans l'étape $group
AVG(f)$avg: "$f"Dans l'étape $group
MIN(f)$min: "$f"Dans l'étape $group
MAX(f)$max: "$f"Dans l'étape $group
ORDER BY ASCsort({ f: 1 })Croissant
ORDER BY DESCsort({ f: -1 })Décroissant
LIMIT nlimit(n)
OFFSET nskip(n)

Pourquoi convertir du SQL vers MongoDB ?

Migration de base de données

Vous passez de MySQL, PostgreSQL, SQL Server ou SQLite à MongoDB ? Traduisez rapidement la logique de vos requêtes existantes et réduisez le risque d'erreurs pendant la migration.

Apprendre MongoDB

Si vous connaissez déjà SQL, voir chaque concept mis en regard de son équivalent est la voie la plus rapide vers le langage de requête de MongoDB et le modèle documentaire qui le sous-tend.

Développement au quotidien

Même les développeurs MongoDB expérimentés raisonnent souvent d'abord en SQL. Utilisez le convertisseur comme référence rapide pour transposer ce modèle mental dans la bonne syntaxe.

Travail en équipe

Partagez les requêtes converties avec des collègues venus du monde relationnel. Une référence commune supprime les frictions entre deux cultures de bases de données.

Questions fréquentes

Comment convertir une requête SQL en MongoDB ?

Collez votre instruction SQL dans le panneau de saisie et appuyez sur Convertir. L'outil analyse le SQL et renvoie la commande équivalente pour le shell MongoDB : SELECT devient find(), les conditions WHERE deviennent un filtre de requête, ORDER BY devient sort(), et LIMIT et OFFSET deviennent limit() et skip(). Aucune inscription ni installation n'est nécessaire.

Quel est l'équivalent MongoDB du LIKE de SQL ?

MongoDB ne possède pas de mot-clé LIKE : la recherche par motif se fait avec $regex. Le joker % de SQL devient .* et le joker _ devient un simple point. Ainsi, WHERE name LIKE '%mongo%' se convertit en { name: { $regex: /.*mongo.*/ } }, et NOT LIKE est encapsulé dans $not.

Quel est l'équivalent MongoDB de GROUP BY ?

GROUP BY correspond à un pipeline d'agrégation comportant une étape $group. Les colonnes regroupées deviennent l'_id de cette étape et les fonctions d'agrégation deviennent des accumulateurs : COUNT(*) devient { $sum: 1 }, SUM(champ) devient { $sum: "$champ" }, tandis que AVG, MIN et MAX correspondent à $avg, $min et $max. Une clause HAVING devient une seconde étape $match placée après $group.

Ce convertisseur prend-il en charge les JOIN SQL ?

Pas automatiquement. Un JOIN dans MongoDB nécessite une étape $lookup ainsi qu'un choix de modélisation : les données liées doivent-elles être imbriquées ou référencées ? Cela dépend de la conception de votre schéma et non du seul SQL. Convertissez ici les requêtes portant sur une seule table et ajoutez vous-même l'étape $lookup.

Puis-je migrer des données de MySQL ou SQL Server vers MongoDB avec cet outil ?

Non. Ce convertisseur traduit la syntaxe des requêtes, pas les données. Pour déplacer les enregistrements eux-mêmes, il vous faut un outil de migration tel que MongoDB Relational Migrator, gratuit et compatible avec Oracle, SQL Server, MySQL et PostgreSQL. Utilisez ce convertisseur en parallèle pour traduire les requêtes déjà présentes dans le code de votre application.

Ce convertisseur SQL vers MongoDB est-il gratuit ?

Oui. L'outil est entièrement gratuit, fonctionne dans votre navigateur, ne demande aucun compte et ne conserve aucune de vos requêtes. Il est disponible en anglais, italien, russe, chinois, français et espagnol.

Vous préparez une migration, pas seulement une requête ?

Convertir les requêtes est la dernière étape. Ces guides traitent de ce qui décide du succès d'une migration : comment repenser un schéma relationnel en documents.