Перейти до вмісту

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 кудись завантажується?
Ні. Перетворення відбувається повністю у вашому браузері — ваш запит, імена таблиць і дані ніколи не залишають ваш пристрій.