Вставьте любой SQL-запрос и сразу получите его эквивалент для MongoDB. Поддерживаются SELECT, INSERT, UPDATE, DELETE, GROUP BY, HAVING, LIKE, IN, IS NULL и многое другое.
Инструмент переводит стандартные SQL-запросы в эквивалентный синтаксис MongoDB — документоориентированной NoSQL-базы данных. Он рассчитан на разработчиков, которые переходят с реляционной СУБД или работают с обеими одновременно.
Введите SQL-запрос в левой панели, и соответствующий запрос MongoDB появится рядом. Разбор выполняет полноценный SQL-парсер, поэтому сложные условия WHERE и базовые агрегации преобразуются корректно, а не приблизительно.
Поддерживаемые операции SQLВыбор столбцов и условия WHERE превращаются в вызов find() с фильтром запроса и проекцией.
ORDER BY становится sort(), LIMIT становится limit(), а OFFSET становится skip().
GROUP BY вместе с агрегатными функциями (COUNT, SUM, AVG, MIN, MAX) преобразуется в конвейер агрегации MongoDB.
Фильтр HAVING становится вторым этапом $match в конвейере и применяется уже после группировки.
Шаблоны LIKE с символами % (любая последовательность символов) и _ (один символ) преобразуются в регулярные выражения MongoDB.
Полная поддержка IN/$in, NOT IN/$nin, IS NULL, IS NOT NULL/$ne, AND/$and и OR/$or, включая скобки для группировки условий.
INSERT одной строки становится insertOne(), INSERT нескольких строк — insertMany(). Имена столбцов становятся именами полей документа.
Секция SET превращается в оператор $set, а условие WHERE — в документ-фильтр.
DELETE FROM с условием WHERE становится deleteMany(). Используйте осторожно: без WHERE будут удалены все документы.
| Оператор SQL | Оператор MongoDB | Примечания |
|---|---|---|
| = | $eq (or implicit) | Точное совпадение |
| != / <> | $ne | Не равно |
| > | $gt | Больше чем |
| >= | $gte | Больше или равно |
| < | $lt | Меньше чем |
| <= | $lte | Меньше или равно |
| IN (...) | $in | Значение есть в списке |
| NOT IN (...) | $nin | Значения нет в списке |
| LIKE '%x%' | $regex: /.*x.*/ | % превращается в .*, _ — в . |
| NOT LIKE | $not: /pattern/ | Отрицание регулярного выражения |
| IS NULL | field: null | Включает и отсутствующие поля |
| IS NOT NULL | $ne: null | Поле существует и не равно null |
| AND | $and | Должны выполняться все условия |
| OR | $or | Достаточно одного условия |
| COUNT(*) | $sum: 1 | Внутри этапа $group |
| SUM(f) | $sum: "$f" | Внутри этапа $group |
| AVG(f) | $avg: "$f" | Внутри этапа $group |
| MIN(f) | $min: "$f" | Внутри этапа $group |
| MAX(f) | $max: "$f" | Внутри этапа $group |
| ORDER BY ASC | sort({ f: 1 }) | По возрастанию |
| ORDER BY DESC | sort({ f: -1 }) | По убыванию |
| LIMIT n | limit(n) | |
| OFFSET n | skip(n) |
Переходите с MySQL, PostgreSQL, SQL Server или SQLite на MongoDB? Быстро переведите логику существующих запросов и снизьте риск ошибок при миграции.
Если вы уже знаете SQL, сопоставление каждой конструкции с её эквивалентом — самый быстрый путь к языку запросов MongoDB и к документной модели, лежащей в его основе.
Даже опытные разработчики MongoDB часто сначала думают на SQL. Используйте конвертер как быстрый справочник, чтобы перевести эту мысль в правильный синтаксис.
Делитесь преобразованными запросами с коллегами из реляционного мира. Общий справочник снимает трение между двумя разными культурами баз данных.
Вставьте SQL-инструкцию в поле ввода и нажмите «Преобразовать». Инструмент разберёт SQL и вернёт эквивалентную команду для оболочки MongoDB: SELECT становится find(), условия WHERE — фильтром запроса, ORDER BY — sort(), а LIMIT и OFFSET — limit() и skip(). Регистрация и установка не требуются.
В MongoDB нет ключевого слова LIKE: поиск по шаблону выполняется через $regex. Подстановочный символ % превращается в .*, а символ _ — в одну точку. Так, WHERE name LIKE '%mongo%' преобразуется в { name: { $regex: /.*mongo.*/ } }, а NOT LIKE оборачивается в $not.
GROUP BY соответствует конвейеру агрегации с этапом $group. Столбцы группировки становятся полем _id этого этапа, а агрегатные функции — аккумуляторами: COUNT(*) превращается в { $sum: 1 }, SUM(поле) — в { $sum: "$поле" }, а AVG, MIN и MAX соответствуют $avg, $min и $max. Условие HAVING становится вторым этапом $match, расположенным после $group.
Не автоматически. JOIN в MongoDB требует этапа $lookup и решения о том, встраивать связанные данные в документ или ссылаться на них. Это зависит от проектирования схемы, а не только от исходного SQL. Преобразуйте здесь запросы к одной таблице и добавьте этап $lookup самостоятельно.
Нет. Конвертер переводит синтаксис запросов, а не сами данные. Для переноса записей нужен инструмент миграции, например MongoDB Relational Migrator: он бесплатен и поддерживает Oracle, SQL Server, MySQL и PostgreSQL. Используйте этот конвертер параллельно, чтобы перевести запросы, уже заложенные в код вашего приложения.
Да. Инструмент полностью бесплатен, работает в браузере, не требует учётной записи и не сохраняет ваши запросы. Он доступен на английском, итальянском, русском, китайском, французском и испанском языках.
Преобразование запросов — последний шаг. Эти руководства посвящены тому, что определяет успех миграции: как перепроектировать реляционную схему в документы.