Docs Menu
Docs Home
/
BI 커넥터
/

mongotranslate

이 페이지의 내용

  • 설명
  • 사용법
  • 명령줄 옵션
  • 예시

mongotranslate SQL 쿼리가 MongoDB 집계 언어 로 표현될 수 있는 방법을 사용자가 이해할 수 있도록 설계된 학습 도구입니다. BI Connector의 SQL 애그리게이션 변환 엔진 은 특정 BI Connector 변환 문제를 해결하는 데에도 사용할 수 있는 번역을 제공합니다.

mongotranslate 독립형 프로그램입니다. 에 의해 생성된drdl mongodrdl 파일 이 필요하지만 실행 mongosqld 시 또는 mongod 를 실행할 필요는 없습니다.

mongotranslate 의 구문은 다음과 같습니다:

mongotranslate [--query | --queryFile] <query | queryfile> [options]
--query

MongoDB 집계 파이프라인 으로 변환할 SQL 쿼리 를 지정합니다. --query 또는 --queryFile 중 하나가 필요합니다.

--queryFile

MongoDB 집계 파이프라인 으로 변환할 SQL 쿼리 가 포함된 파일 의 경로를 지정합니다. --query 또는 --queryFile 중 하나가 필요합니다.

--schema

필수입니다. SQL 쿼리 를 집계 파이프라인 으로 변환할 때 사용할 .drdl 스키마 파일 또는 mongodrdl 프로그램에서 만든 하나 이상의 .drdl 스키마 파일이 포함된 디렉토리 를 지정합니다.

--dbName

기본값: test

SQL 쿼리에서 정규화되지 않은 테이블 이름에 사용할 데이터베이스 이름입니다.

다음 예시에서는 fruit 컬렉션과 --dbName 옵션을 사용하여 fruitgroceries 데이터베이스에 있음을 지정합니다.

mongotranslate "SELECT * FROM fruit WHERE _id > 100;" \
--schema schema.drdl --dbName groceries

--dbName 옵션을 사용하여 데이터베이스를 지정하지 않는 경우 mongotranslatefruittest 데이터베이스에 있는 것으로 가정합니다. 스키마에 test 데이터베이스의 test 또는 테이블 이름 fruit이 포함되어 있지 않은 경우, mongotranslate는 오류를 반환합니다.

다음 예시에서는 정규화된 테이블 이름을 사용하므로 --dbName 옵션이 필요하지 않습니다.

mongotranslate "SELECT * FROM groceries.fruit WHERE _id > 100;" \
--schema schema.drdl

SQL 쿼리 에서 각 테이블 이름과 함께 데이터베이스 를 지정하는 경우 --dbName 옵션이 사용되면 무시됩니다.

--explain

선택 사항입니다. 변환된 집계 파이프라인 대신 쿼리 계획에 대한 explain 출력을 반환합니다. --explain 을 사용하면 BI Connector에 연결된 BI 도구에서 EXPLAIN <query> 를 실행하는 것과 유사한 출력이 반환됩니다.

--format

기본값: multiline

선택 사항. 유효한 옵션은 nonemultiline 입니다. 기본값 multiline 옵션은 결과를 더 읽기 쉬운 형식으로 표시합니다.

명령 유형
옵션
설명
--explain 옵션 없이
--format none
집계 파이프라인 을 모두 한 줄에 반환합니다.
--explain 옵션 없이
--format multiline
한 줄에 하나의 파이프라인 단계가 있는 집계 파이프라인 을 반환합니다.
--explain 옵션 포함
--format none
모든 필드를 한 줄에 반환합니다.
--explain 옵션 포함
--format multiline
한 줄에 하나의 필드를 반환하며, 배열 및 개체 하위 필드용 추가 서식을 제공합니다.
--mongoversion

기본값: latest

선택 사항입니다. 지정된 MongoDB 버전과 호환되는 집계 파이프라인을 반환합니다. 허용되는 값은 다음과 같습니다.

  • 3.2

  • 3.4

  • 3.6

  • 4.0

  • latest

기본값은 latest입니다.

다음 예시에서는 번환을 위한 인라인 쿼리를 지정합니다.

mongotranslate --query=“select test.name from restaurants where name like 'Brooklyn%'” \
--schema=schema.drdl

위의 명령은 다음과 같은 결과를 반환합니다.

[
{"$match": {"name": {"$regex": "^Brooklyn.*$","$options": "i"}}},
{"$project": {"test_DOT_restaurants_DOT_name": "$name","_id": {"$numberInt":"0"}}},
]

참고

--query 매개변수 내에서 문자열을 인용해야 하는 경우 작은따옴표를 사용해야 합니다. 쿼리에 큰따옴표나 역따옴표를 사용해야 하는 경우 --queryFile 옵션을 사용하세요.

다음 예시 에서는 쿼리 파일 을 지정하고 한 줄 결과를 반환합니다.

mongotranslate --queryFile=query.txt --schema=schema.drdl --format=none

다음 예시 에서는 --explain 옵션을 사용합니다.

mongotranslate --query="select count(name) from restaurants;" \
--schema=schema.drdl --explain

위의 명령은 다음과 같은 결과를 반환합니다.

[
{
"ID": 1,
"StageType": "MongoSourceStage",
"Columns": "[{name: 'count(name)', type: 'int'}]",
"Sources": null,
"Database": {},
"Tables": {},
"Aliases": {},
"Collections": {},
"Pipeline": {},
"PipelineExplain": {},
"PushdownFailures": null
}
]

돌아가기

mongodrdl