Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs Menu
Docs Home
/
MongoDB 매뉴얼
/ /

셸 에 대한 스크립트 작성 mongo shell

경고

다음 문서 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");

참고

버전 부터 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 은 모든 커서의 내용을 포함한 작업 결과를 인쇄합니다. 스크립트에서는 JavaScript print() 함수 또는 형식이 지정된 JSON을 반환하는 mongo 특정 printjson() 함수를 사용합니다.

    예시

    mongo shell 스크립트에서 결과 커서 의 모든 항목을 인쇄하려면 다음 관용구를 사용합니다.

    cursor = db.collection.find();
    while ( cursor.hasNext() ) {
    printjson( cursor.next() );
    }

시스템 프롬프트에서 mongo shell 을 사용하여 JavaScript 를 평가합니다.

다음과 같이 에 --eval 옵션을 사용하여 mongo shell shell 에 프래그먼트를 전달합니다.JavaScript

mongo test --eval "printjson(db.getCollectionNames())"

이렇게 하면 에 db.getCollectionNames() 연결된 mongo shell mongod 또는 mongos 27017 인터페이스의 localhost 포트 에서 실행 인스턴스 를 사용하여 의 출력을 반환합니다.

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")

참고

load() 함수에 대한 검색 경로가 없습니다. 원하는 스크립트 가 현재 작업 디렉토리 나 지정된 전체 경로에 없는 경우 mongosh 는 파일 에 액세스 할 수 없습니다.

돌아가기

mongo 셸 도움말 액세스

이 페이지의 내용