경고
다음 문서 MongoDB Server 다운로드 에 포함된 셸mongo
과 관련이 있습니다. 새로운 MongoDB Shell ()에 대한 자세한mongosh
내용은 mongosh 설명서를 참조하세요.
두 셸의 차이점을 이해하려면 mongo
shell 과 mongosh
비교를 참조하세요.
로 에 대한 스크립트를 쓰기 (write)mongo
shell JavaScript 하여 의 데이터를 MongoDB 조작하거나 관리 작업을 수행할 수 있습니다.
이 튜토리얼에서는 JavaScript 을 사용하여 에 액세스 하는 작성 방법을 mongo
shell MongoDB소개합니다.
새 연결 열기
mongo
shell 또는 JavaScript 파일 에서 Mongo()
생성자를 사용하여 데이터베이스 연결을 인스턴스화할 수 있습니다.
new Mongo() new Mongo(<host>) new Mongo(<host:port>)
기본값 포트의 로컬 호스트에서 실행 MongoDB 인스턴스 에 대한 새 연결을 인스턴스화하고 getDB()
메서드를 사용하여 글로벌 db
변수를 myDatabase
(으)로 설정하는 다음 예시 를 고려하세요.
conn = new Mongo(); db = conn.getDB("myDatabase");
액세스 제어를 적용하는 MongoDB 인스턴스 에 연결하는 경우 db.auth()
메서드를 사용하여 인증할 수 있습니다.
또한 connect()
메서드를 사용하여 MongoDB 인스턴스 에 연결할 수 있습니다. 다음 예시 에서는 기본이 아닌 포트 27020
를 사용하여 localhost
에서 실행 MongoDB 인스턴스 에 연결하고 글로벌 db
변수를 설정하다 합니다.
db = connect("localhost:27020/myDatabase");
대화형과 스크립트의 차이점 mongo
참고
버전 부터 4.2 은 mongo
shell 이 대화형 모드에서 실행 스크립트 모드 isInteractive()
mongo
shell 에서 실행 중인지 여부를 나타내는 부울을 반환하는 메서드를 제공합니다.
mongo
shell 에 대한 스크립트를 작성할 때 다음 사항을 고려하세요.
db
글로벌 변수를 설정하다 하려면getDB()
메서드 또는connect()
메서드를 사용합니다. 데이터베이스 참조를db
이외의 변수에 할당할 수 있습니다.mongo
shell 의 쓰기 작업은 기본값 { w: 1 } 의 쓰기 고려 (write concern) 를 사용합니다. 대량 작업을 수행하는 경우Bulk()
메서드를 사용합니다.어떤 shell 헬퍼도 사용할 수 없습니다 (예:
use <dbname>
,show dbs
등)는 유효한 JavaScript 가 아니기 때문에 JavaScript 파일 내에 포함됩니다.다음 표는 가장 일반적인
mongo
shell 헬퍼를 JavaScript 에 해당하는 헬퍼에 매핑합니다.shell 헬퍼JavaScript 에 상응하는 기능show dbs
,show databases
db.adminCommand('listDatabases') use <db> db = db.getSiblingDB('<db>') show collections db.getCollectionNames() show users db.getUsers() show roles db.getRoles({showBuiltinRoles: true}) show log <logname> db.adminCommand({ 'getLog' : '<logname>' }) show logs db.adminCommand({ 'getLog' : '*' }) it cursor = db.collection.find() if ( cursor.hasNext() ){ cursor.next(); } 대화형 모드에서
mongo
shell 은 모든 커서의 내용을 포함한 작업 결과를 인쇄합니다. 스크립트에서는 JavaScriptprint()
함수 또는 형식이 지정된 JSON을 반환하는mongo
특정printjson()
함수를 사용합니다.예시
mongo
shell 스크립트에서 결과 커서 의 모든 항목을 인쇄하려면 다음 관용구를 사용합니다.cursor = db.collection.find(); while ( cursor.hasNext() ) { printjson( cursor.next() ); }
스크립팅
시스템 프롬프트에서 mongo
shell 을 사용하여 JavaScript 를 평가합니다.
--eval
옵션
다음과 같이 에 --eval
옵션을 사용하여 mongo
shell shell 에 프래그먼트를 전달합니다.JavaScript
mongo test --eval "printjson(db.getCollectionNames())"
이렇게 하면 에 db.getCollectionNames()
연결된 mongo
shell mongod
또는 mongos
27017
인터페이스의 localhost
포트 에서 실행 인스턴스 를 사용하여 의 출력을 반환합니다.
JavaScript 파일 실행하기
mongo
shell 에 .js
파일 을 지정하면 mongo
이(가) JavaScript 를 직접 실행합니다. 다음 예시 살펴보겠습니다.
mongo localhost:27017/test myjsfile.js
이 작업은 포트 의 인터페이스를 통해 액세스할 수 myjsfile.js
mongo
shell 있는 test
인스턴스 의 데이터베이스 에 mongod
연결하는 에서 스크립트 localhost
27017
를 실행합니다.
MongoDB JavaScript 또는 Mongo()
생성자를 사용하여 파일 내에서 연결 매개변수를 지정할 수 있습니다. 자세한 내용은 새 연결 열기 를 참조하세요.
다음과 같이 함수를 load()
사용하여 mongosh
내에서 파일 을 실행할 수 있습니다..js
load("myjstest.js")
이 함수는 myjstest.js
파일 을 로드하고 실행합니다.
load()
메서드는 상대 경로와 절대 경로를 허용합니다. mongosh
의 현재 작업 디렉토리 가 /data/db
이고 myjstest.js
이 /data/db/scripts
디렉토리 에 있는 경우 mongosh
내의 다음 호출은 동일합니다.
load("scripts/myjstest.js") load("/data/db/scripts/myjstest.js")