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
옵션을 사용하여fruit
이groceries
데이터베이스에 있음을 지정합니다.mongotranslate "SELECT * FROM fruit WHERE _id > 100;" \ --schema schema.drdl --dbName groceries --dbName
옵션을 사용하여 데이터베이스를 지정하지 않는 경우mongotranslate
는fruit
가test
데이터베이스에 있는 것으로 가정합니다. 스키마에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>
를 실행하는 것과 유사한 출력이 반환됩니다.
예시
다음 예시에서는 번환을 위한 인라인 쿼리를 지정합니다.
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 } ]