SQL-ЗАПРОС
ЗАПРОС MONGODB
// Здесь появится запрос MongoDB...
// Попробуйте пример

Что это за конвертер SQL в MongoDB?

Инструмент переводит стандартные SQL-запросы в эквивалентный синтаксис MongoDB — документоориентированной NoSQL-базы данных. Он рассчитан на разработчиков, которые переходят с реляционной СУБД или работают с обеими одновременно.

Введите SQL-запрос в левой панели, и соответствующий запрос MongoDB появится рядом. Разбор выполняет полноценный SQL-парсер, поэтому сложные условия WHERE и базовые агрегации преобразуются корректно, а не приблизительно.

Конвертер построен на библиотеке разбора SQL, что позволяет ему обрабатывать широкий набор инструкций:

SELECT

find() — базовый запрос

Выбор столбцов и условия WHERE превращаются в вызов find() с фильтром запроса и проекцией.

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 становится sort(), LIMIT становится limit(), а OFFSET становится 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 вместе с агрегатными функциями (COUNT, SUM, AVG, MIN, MAX) преобразуется в конвейер агрегации MongoDB.

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

HAVING → $match после $group

Фильтр HAVING становится вторым этапом $match в конвейере и применяется уже после группировки.

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

LIKE → $regex

Шаблоны LIKE с символами % (любая последовательность символов) и _ (один символ) преобразуются в регулярные выражения 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

Полная поддержка IN/$in, NOT IN/$nin, IS NULL, IS NOT NULL/$ne, AND/$and и OR/$or, включая скобки для группировки условий.

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()

INSERT одной строки становится insertOne(), INSERT нескольких строк — insertMany(). Имена столбцов становятся именами полей документа.

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

updateMany() с $set

Секция SET превращается в оператор $set, а условие WHERE — в документ-фильтр.

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

deleteMany()

DELETE FROM с условием WHERE становится deleteMany(). Используйте осторожно: без WHERE будут удалены все документы.

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

Справочник операторов SQL → MongoDB

Оператор SQL Оператор MongoDB Примечания
=$eq (or implicit)Точное совпадение
!= / <>$neНе равно
>$gtБольше чем
>=$gteБольше или равно
<$ltМеньше чем
<=$lteМеньше или равно
IN (...)$inЗначение есть в списке
NOT IN (...)$ninЗначения нет в списке
LIKE '%x%'$regex: /.*x.*/% превращается в .*, _ — в .
NOT LIKE$not: /pattern/Отрицание регулярного выражения
IS NULLfield: 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 ASCsort({ f: 1 })По возрастанию
ORDER BY DESCsort({ f: -1 })По убыванию
LIMIT nlimit(n)
OFFSET nskip(n)

Зачем преобразовывать SQL в MongoDB?

Миграция базы данных

Переходите с MySQL, PostgreSQL, SQL Server или SQLite на MongoDB? Быстро переведите логику существующих запросов и снизьте риск ошибок при миграции.

Изучение MongoDB

Если вы уже знаете SQL, сопоставление каждой конструкции с её эквивалентом — самый быстрый путь к языку запросов MongoDB и к документной модели, лежащей в его основе.

Повседневная разработка

Даже опытные разработчики MongoDB часто сначала думают на SQL. Используйте конвертер как быстрый справочник, чтобы перевести эту мысль в правильный синтаксис.

Работа в команде

Делитесь преобразованными запросами с коллегами из реляционного мира. Общий справочник снимает трение между двумя разными культурами баз данных.

Частые вопросы

Как преобразовать SQL-запрос в MongoDB?

Вставьте SQL-инструкцию в поле ввода и нажмите «Преобразовать». Инструмент разберёт SQL и вернёт эквивалентную команду для оболочки MongoDB: SELECT становится find(), условия WHERE — фильтром запроса, ORDER BY — sort(), а LIMIT и OFFSET — limit() и skip(). Регистрация и установка не требуются.

Что в MongoDB соответствует оператору LIKE из SQL?

В MongoDB нет ключевого слова LIKE: поиск по шаблону выполняется через $regex. Подстановочный символ % превращается в .*, а символ _ — в одну точку. Так, WHERE name LIKE '%mongo%' преобразуется в { name: { $regex: /.*mongo.*/ } }, а NOT LIKE оборачивается в $not.

Что в MongoDB соответствует GROUP BY?

GROUP BY соответствует конвейеру агрегации с этапом $group. Столбцы группировки становятся полем _id этого этапа, а агрегатные функции — аккумуляторами: COUNT(*) превращается в { $sum: 1 }, SUM(поле) — в { $sum: "$поле" }, а AVG, MIN и MAX соответствуют $avg, $min и $max. Условие HAVING становится вторым этапом $match, расположенным после $group.

Поддерживает ли конвертер SQL-соединения JOIN?

Не автоматически. JOIN в MongoDB требует этапа $lookup и решения о том, встраивать связанные данные в документ или ссылаться на них. Это зависит от проектирования схемы, а не только от исходного SQL. Преобразуйте здесь запросы к одной таблице и добавьте этап $lookup самостоятельно.

Можно ли этим инструментом перенести данные из MySQL или SQL Server в MongoDB?

Нет. Конвертер переводит синтаксис запросов, а не сами данные. Для переноса записей нужен инструмент миграции, например MongoDB Relational Migrator: он бесплатен и поддерживает Oracle, SQL Server, MySQL и PostgreSQL. Используйте этот конвертер параллельно, чтобы перевести запросы, уже заложенные в код вашего приложения.

Этот конвертер SQL в MongoDB бесплатный?

Да. Инструмент полностью бесплатен, работает в браузере, не требует учётной записи и не сохраняет ваши запросы. Он доступен на английском, итальянском, русском, китайском, французском и испанском языках.

Планируете миграцию, а не просто запрос?

Преобразование запросов — последний шаг. Эти руководства посвящены тому, что определяет успех миграции: как перепроектировать реляционную схему в документы.