SQL в NoSQL

Вставьте один SQL-запрос SELECT, и конвертер перепишет его в эквивалентный запрос find() MongoDB. Он сопоставляет выбранные столбцы с проекцией, клаузу WHERE с фильтром, ORDER BY с .sort() и LIMIT с .limit(). Это переписчик запросов для простых конструкций, а не инструмент миграции: JOIN, GROUP BY, агрегации и подзапросы не поддерживаются.

Как работает преобразование

  1. 1

    Разбор SELECT

    Инструмент читает один запрос вида `SELECT столбцы FROM таблица [WHERE ...] [ORDER BY ...] [LIMIT n]`.

  2. 2

    Сопоставление каждой клаузы

    Столбцы становятся проекцией `{ col: 1 }`, `WHERE` становится фильтром, `ORDER BY` становится `.sort()`, а `LIMIT` становится `.limit()`.

  3. 3

    Перевод операторов

    Операторы сравнения сопоставляются с операторами Mongo: `>` с `$gt`, `<` с `$lt`, `>=` с `$gte`, `<=` с `$lte`, `!=` с `$ne`, а `=` с прямым совпадением.

  4. 4

    Скопируйте результат

    Сформированная строка `db.collection.find(...)` готова к вставке в оболочку mongosh или вызов драйвера.

Разобранный пример

SQL:

SELECT name, price FROM products WHERE price > 100 ORDER BY price DESC LIMIT 5;

Запрос MongoDB:

db.products.find({ price: { $gt: 100 } }, { name: 1, price: 1 }).sort({ price: -1 }).limit(5)

Что сопоставляет конвертер

SQL MongoDB find()
SELECT a, b проекция { a: 1, b: 1 }
SELECT * все поля (пустая проекция)
FROM users db.users.find(...)
WHERE a = 5 { a: 5 }
WHERE a > 5 { a: { $gt: 5 } }
WHERE a >= 5 { a: { $gte: 5 } }
WHERE a != 5 { a: { $ne: 5 } }
WHERE a AND b { a: ..., b: ... }
WHERE a OR b { $or: [ ... ] }
ORDER BY a DESC .sort({ a: -1 })
LIMIT 10 .limit(10)

Что не поддерживается

  • JOIN. Читается только одна таблица. Объединение коллекций требует $lookup или денормализованной модели данных, а это решение уровня схемы, а не переписывание запроса.
  • GROUP BY и агрегации. COUNT, SUM, AVG и GROUP BY требуют конвейера агрегации (db.collection.aggregate([...])), который этот инструмент не создает.
  • Подзапросы, CTE и оконные функции. Переосмыслите модель или разбейте работу на этапы; их нельзя выразить в find().
  • IN, LIKE и BETWEEN. Парсер WHERE обрабатывает только операторы сравнения =, >, <, >=, <=, != и <>.
  • Смешение AND и OR. Клауза WHERE трактуется целиком как AND или целиком как OR; не сочетайте оба в одном запросе.
  • INSERT, UPDATE, DELETE, CREATE TABLE. Преобразуется только SELECT.

О результате

Результат всегда представляет собой одну строку db.collection.find(фильтр, проекция), при необходимости с добавлением .sort() и .limit(). Он рассчитан на оболочку и драйверы MongoDB. Он не создает запросы Firestore или Elasticsearch, не подбирает индексы и не оптимизирует производительность. Проверьте запрос на своих данных, прежде чем полагаться на него.

Часто задаваемые вопросы

Нет. Результат всегда представляет собой запрос find() MongoDB для оболочки mongosh или драйвера. Выбора цели для других документных хранилищ нет.

Нет. Для этого нужен конвейер агрегации MongoDB (aggregate([...])), который этот инструмент не создает. Он выдает только запросы find() с фильтром, проекцией, сортировкой и лимитом.

Нет. Читается только одна таблица FROM. Хранилища NoSQL предпочитают встраивание или ссылки, поэтому JOIN обычно означает изменение модели данных, а не переписывание запроса.

Нет. Преобразуются только запросы SELECT. Коллекции в MongoDB по умолчанию бессхемны, поэтому переводить определение таблицы не из чего.

Сопутствующие инструменты

Справочная таблица ASCII

Полная таблица ASCII от 0 до 127 с десятичным, шестнадцатеричным, восьмеричным и двоичным представлением, а также записью числовых ссылок HTML, включая NUL, LF и DEL.

Справочник символов HTML

Справочник HTML-сущностей с поиском, их именованными и числовыми кодами, а также копированием специальных символов и знаков одним кликом.

Справочник сочетаний клавиш

Ищите документированные сочетания по умолчанию для VS Code, Chrome и Bash с GNU Readline в macOS, Windows и Linux.

Счетчик FPS

Измерьте FPS браузера через requestAnimationFrame: сглаживание, минимальная и максимальная частота кадров, порог предупреждения и график по желанию. Работает локально, без загрузок и API.

Генератор случайных букв

Генерируйте случайные буквы A-Z. Выберите количество, верхний или нижний регистр либо смешанный вариант для игр, заданий и уроков.

Конвертер размера файлов

Преобразуйте значения между байтами, КБ, МБ, ГБ, ТБ и двоичными единицами IEC (KiB, MiB, GiB, TiB), свободно сочетая десятичные и двоичные единицы.

Инструмент доступен на других языках