SQL → NoSQL

단일 SQL SELECT 문을 붙여넣으면 변환기가 이를 동등한 MongoDB find() 쿼리로 다시 씁니다. 선택한 열은 프로젝션으로, 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 쿼리를 생성하지 않고, 인덱스를 고르거나 성능을 최적화하지도 않습니다. 신뢰하고 사용하기 전에 자신의 데이터로 쿼리를 테스트하세요.

자주 묻는 질문

아니요. 출력은 항상 mongosh 셸이나 드라이버용 MongoDB find() 쿼리입니다. 다른 문서 저장소를 위한 대상 선택기는 없습니다.

아니요. 그것들은 이 도구가 생성하지 않는 MongoDB 집계 파이프라인(aggregate([...]))이 필요합니다. 이 도구는 필터, 프로젝션, 정렬, 제한이 있는 find() 쿼리만 생성합니다.

아니요. 단일 FROM 테이블만 읽습니다. NoSQL 저장소는 임베딩이나 참조를 선호하므로 JOIN은 보통 쿼리 재작성이 아니라 데이터 모델 변경을 의미합니다.

아니요. SELECT 문만 변환됩니다. MongoDB의 컬렉션은 기본적으로 스키마가 없으므로 변환할 테이블 정의가 없습니다.

관련 도구

이 도구는 다른 언어로도 제공됩니다