Перейти к содержанию

SQL в MongoDB запрос

Преобразовать оператор SQL SELECT в вызов MongoDB find() или агрегационный конвейер.

Входные данные
Выходные данные

SQL в MongoDB запрос

Вставьте оператор SQL SELECT и этот инструмент преобразует его в эквивалентный MongoDB запрос — либо вызов метода mongosh, который можно запустить в оболочке, либо простой JSON документ запроса для вашего собственного кода драйвера. Он читает предложение WHERE, ORDER BY, LIMIT и OFFSET и преобразует их в MongoDB фильтр, сортировку, limit и skip, поэтому "SELECT id, name FROM users WHERE age > 18 ORDER BY name DESC LIMIT 10" становится готовым к запуску find() с соответствующим фильтром и объектом sort.

Он также понимает агрегацию. COUNT, SUM, AVG, MIN и MAX в списке SELECT в сочетании с GROUP BY создают стадию $group, за которой следует стадия $project, которая переименовывает сгруппированные поля _id обратно в исходные столбцы. JOIN становится стадией $lookup плюс $unwind, когда включена опция "Преобразовать JOIN в $lookup" — отключите её, и join будет удален, с примечанием объясняющим почему. Опция "Преобразовать имена столбцов в camelCase" преобразует столбцы snake_case, такие как first_name, в firstName, соответствуя типичному именованию Mongoose, а отступ вы можете установить сами.

Не каждая конструкция SQL имеет чистый эквивалент MongoDB — подзапросы, UNION, выражения CASE и HAVING не отображаются на один запрос или конвейер. Вместо того чтобы молча создавать неправильный запрос, инструмент выводит понятную ошибку с названием неподдерживаемой конструкции, или для вещей, которые он может обойти (дополнительное JOIN, отброшенное HAVING, несгруппированный столбец SELECT), добавляет краткое комментарий предупреждения выше сгенерированного запроса, объясняющий что изменилось.

Всё работает локально в вашем браузере: SQL анализируется и конвертируется полностью на вашем устройстве, и никакой запрос или схема никогда не покидает его. Скопируйте результат, загрузите его как .txt файл или отправьте обратно в вход для продолжения уточнения исходного запроса.

FAQ

Поддерживаются ли JOIN?
Один JOIN преобразуется в стадию $lookup плюс $unwind в агрегационном конвейере, когда включена опция "Преобразовать JOIN в $lookup". RIGHT JOIN преобразуется как LEFT JOIN, а дополнительные JOIN сверх первого отмечаются как игнорируемые.
Что происходит с GROUP BY и агрегирующими функциями, такими как COUNT или SUM?
Они становятся стадией $group (с правильным аккумулятором для каждой функции), за которой следует стадия $project, которая восстанавливает исходные имена столбцов, всё внутри агрегационного конвейера.
Какие функции SQL не поддерживаются?
Подзапросы, UNION и выражения CASE не имеют прямого эквивалента MongoDB и создают четкую ошибку вместо неправильного запроса. HAVING принимается, но отбрасывается с предупреждением, так как он требует второй стадии $match, которую вы добавляете самостоятельно.
Могу ли я получить простой JSON запрос вместо команды mongosh?
Да. Переключите "Формат вывода" на JSON запрос, чтобы получить документ запроса (коллекция, операция, фильтр и так далее), который вы можете разобрать или встроить в свой собственный код вместо вызова оболочки.
Мой SQL куда-то загружается?
Нет. Преобразование происходит полностью в вашем браузере — ваш запрос, имена таблиц и данные никогда не покидают ваше устройство.