3. 개발자 도구(Developer Tools)
MongoDB 개발을 마스터하는 것은 단순히 핵심 개념과 문법을 이해하는 것 이상을 요구합니다. MongoDB와 그 생태계를 최대한 활용하려면 MongoDB가 제공하는 다양한 개발자 도구에 익숙해져야 합니다.
MongoDB는 개발자들이 자신의 MongoDB 클러스터와 데이터를 효과적으로 다룰 수 있도록 최상의 도구를 제공하는 데 주력해 왔습니다. 2011년, MongoDB 1.0이 출시된 지 불과 2년 후, 10gen(현재의 MongoDB Inc.)은 MongoDB 관리 서비스(MMS)를 출시했으며, 이후 Ops Manager로 이름이 변경되었습니다. Ops Manager는 MongoDB 제품을 사용하는 개발자들에게 시스템을 관리하고 모니터링할 수 있는 중요한 포털 역할을 해왔습니다. 이 관리 도구는 초기부터 MongoDB 생태계의 일부로 포함되었으며, MongoDB가 개발자 도구를 제공하는 것뿐만 아니라 데이터베이스 시스템 아키텍처를 지속적으로 발전시키려는 목표를 반영하고 있습니다.
이 장에서 다룰 내용
- 개발자 도구의 카테고리
- MongoDB Shell(mongosh) 사용법
- MongoDB CLI(mongocli) 사용법
- MongoDB Compass 사용법
- VS Code에서 MongoDB 사용하기
기술 요구 사항
이 장에서 다루는 모든 개발자 도구를 사용하려면 MongoDB 클러스터가 실행 중이어야 하며, 해당 클러스터에 연결할 수 있어야 합니다. 이를 위해 로컬에서 직접 실행하거나, MongoDB Atlas의 관리형 서비스를 통해 무료 클러스터를 생성할 수 있습니다.
- MongoDB 커뮤니티 에디션 다운로드: 공식 웹사이트
- MongoDB Atlas 무료 계정 생성: MongoDB Atlas 시작하기
개발자 도구 소개
MongoDB 개발자 도구는 효율적인 데이터베이스 관리 및 쿼리 최적화를 돕기 위해 설계되었습니다. 이러한 도구는 개발자의 생산성을 향상시키고, 성능을 모니터링하며, 선호하는 개발 환경과 원활하게 통합할 수 있도록 지원합니다. 이 섹션에서는 MongoDB의 다양한 개발자 도구, 그 기능, 사용 사례, 그리고 모범 사례를 살펴보며, MongoDB의 모든 기능을 효과적으로 활용하는 방법을 배울 것입니다.
개발자 도구의 카테고리
MongoDB에서 공식적으로 제공하는 개발자 도구들은 사용 목적에 따라 여러 가지로 구분됩니다. 일부 도구는 MongoDB 인스턴스에 저장된 데이터를 관리하는 용도로 사용되며, 일부는 서드파티 소프트웨어를 위한 플러그인 도구로 제공됩니다. 또 다른 일부 도구는 클러스터 자체의 성능 모니터링 및 관리를 위해 활용됩니다.
관리(Administrative) 도구
이 도구들은 데이터베이스 시스템의 관리 및 운영을 위해 사용됩니다.
- MongoDB Shell (mongosh):
JavaScript 및 Node.js 기반의 REPL 환경을 제공하는 도구로 MongoDB 배포 환경과 직접 상호작용하며 쿼리 및 연산 테스트 가능 - MongoDB Compass*:
MongoDB 데이터를 시각적으로 쿼리, 집계, 분석할 수 있는 강력한 GUI 도구
(* 역자주 - MongoDB Compass에서는 AI로 일상적인 문장(자연어 문장)으로 아주 쉽게 Query, Aggregation을 만들 수 있는 기능을 제공합니다. "영화평이 가장 많은 영화를 제목과 영화 평 개수만 내림차순으로 5개만 보여줘" 등으로 입력하면 Query를 만들어 줍니다. 심지어 비문(문법이 잘못된 문장, 非文)으로 물어 봐도 원하는 결과를 만들어 줍니다. 자세한 내용은 AI Enable Natural Language Querying)
백업 및 복구(Backup & Restore) 도구
이 도구들은 MongoDB 데이터베이스의 백업을 생성하거나, 기존 클러스터에 데이터를 복원하는 데 사용됩니다.
- mongodump:
데이터베이스의 내용을 이진(Binary) 파일로 내보내는 명령줄 유틸리티로 MongoDB 데이터의 백업을 생성하는 데 사용됨 - mongorestore:
mongodump로 생성된 데이터 덤프 파일을 로드하는 명령줄 도구로 백업된 데이터를 복원하는 데 사용됨
성능 모니터링(Performance Monitoring) 도구
이 도구들은 데이터베이스 클러스터의 성능을 분석하고, 시스템의 상태를 실시간으로 모니터링할 수 있도록 도와줍니다.
- mongostat:
MongoDB 인스턴스의 실시간 성능 통계를 확인하는 명령줄 도구로 CPU 사용량, 작업 수, 네트워크 트래픽 등 주요 성능 지표 제공 - mongotop:
MongoDB 인스턴스가 데이터 읽기/쓰기 작업에 소요하는 시간을 추적하는 명령줄 도구로 특정 데이터베이스나 컬렉션이 얼마나 많은 리소스를 소비하는지 파악 가능
개발 및 통합(Development & Integration) 도구
MongoDB를 다양한 서드파티 소프트웨어와 통합하여 개발 환경을 확장하는 데 사용됩니다.
- MongoDB Connector for BI:
전통적인 비즈니스 인텔리전스(BI) 툴과 MongoDB를 연동하여 Tableau, Power BI, Excel과 같은 SQL 기반의 BI 툴에서 MongoDB 데이터를 쿼리 가능 - MongoDB for Visual Studio Code:
VS Code에서 MongoDB 데이터베이스를 직접 관리할 수 있도록 지원하여 코드 자동 완성(IntelliSense), 구문 강조(Syntax Highlighting), 쿼리 실행 등 다양한 기능 제공
배포 및 오케스트레이션(Deployment & Orchestration) 도구
이 도구들은 MongoDB의 배포 및 관리를 자동화하고, 클라우드 및 컨테이너 환경과 원활하게 통합될 수 있도록 지원합니다.
- Kubernetes Operator:
Kubernetes 환경에서 MongoDB 클러스터를 쉽게 배포, 확장 및 관리할 수 있도록 지원
MongoDB의 공식 Kubernetes Operator 제공 - Terraform 지원:
Terraform을 활용한 자동 인프라 프로비저닝 지원
다양한 클라우드 플랫폼에서 MongoDB 클러스터를 효율적으로 구축 및 유지 가능
MongoDB Shell
MongoDB Shell(mongosh)은 JavaScript 및 Node.js 기반의 완전한 기능을 갖춘 REPL(Read-Eval-Print Loop) 환경으로, MongoDB 배포 환경을 조작하고 관리하는 데 사용됩니다. mongosh는 강력하고 다재다능한 명령줄 인터페이스(CLI)이며, 데이터베이스와 직접 통신하여 CRUD(Create, Read, Update, Delete) 작업, 관리 작업, 집계(Aggregation), 인덱싱(Indexing) 등의 다양한 기능을 수행할 수 있습니다.
설치 방법
mongosh는 다음 방법 중 하나를 사용하여 설치할 수 있습니다.
- MongoDB 다운로드 센터에서 독립 실행형 패키지 다운로드
- MongoDB 공식 문서의 가이드에 따라 설치
- Node.js의 npm을 이용하여 설치
- 터미널을 엽니다.
- 다음 명령어를 실행하여 mongosh를 전역적으로 설치합니다.
npm install -g mongosh
mongosh를 이용한 MongoDB 연결
설치가 완료되면, 터미널이나 명령 프롬프트에서 mongosh 명령어를 입력하여 MongoDB에 연결할 수 있습니다.
(1) 로컬 MongoDB에 연결
기본적으로 mongosh를 실행하면 로컬(localhost)의 27017 포트에서 실행 중인 MongoDB에 자동으로 연결됩니다.
mongosh
(2) 원격(Remote) MongoDB에 연결
특정 호스트와 포트로 연결하려면 MongoDB 연결 문자열(Connection String) 을 사용합니다.
mongosh "mongodb://<username>:<password>@<hostname>:<port>/<database>"
예제:
mongosh "mongodb://admin:pass123@mongodb.example.com:27017/test"
(3) 성공적으로 연결된 경우
성공적으로 연결되면, 아래와 같은 메시지가 출력됩니다.
Packt Server $ mongosh
Current Mongosh Log ID: 64c3fd54ca5106d524ea1c5c
Connecting to:
mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+2.0
Using MongoDB: 7.0.0
Using Mongosh: 2.0.0
For mongosh info see: https://docs.mongodb.com/mongodb-shell/
------
test>
이제 mongosh 환경에서 명령어를 실행할 수 있습니다.
mongosh 기본 명령어
(1) 데이터베이스 목록 조회
show dbs
결과 예시:
admin 132.00KiB
config 36.00KiB
core 890.00KiB
local 92.00KiB
org 80.00KiB
(2) 특정 데이터베이스 사용
use org
(3) 컬렉션 목록 조회
show collections
결과 예시:
clients
employees
infra
accounts
(4) 컬렉션 데이터 조회
db.employees.find()
결과 예시:
[
{
"_id": ObjectId("5f5b047b7e59b56c5878df4c"),
"first_name": "John",
"last_name": "Doe",
"email": "johndoe@example.com",
"department": "HR",
"salary": 60000
},
{
"_id": ObjectId("5f5b04ac7e59b56c5878df4d"),
"first_name": "Jane",
"last_name": "Smith",
"email": "janesmith@example.com",
"department": "Engineering",
"salary": 75000
},
{
"_id": ObjectId("5f5b04c67e59b56c5878df4e"),
"first_name": "Alice",
"last_name": "Johnson",
"email": "alicejohnson@example.com",
"department": "Sales",
"salary": 55000
}
]
mongosh는 지능형 자동 완성(Intelligent Autocomplete) 및 추천 기능(Suggestions) 을 제공하여 더 빠르고 정확하게 명령어를 입력할 수 있도록 돕습니다.
추가적인 옵션을 탐색하려면 help 명령어를 실행할 수 있습니다.
test> help
mongosh 도움말(Shell Help) 명령어 목록
| 명령어 | 설명 |
| use <database> | 현재 사용할 데이터베이스 변경 |
| show databases 또는 show dbs | 모든 데이터베이스 목록 출력 |
| show collections 또는 show tables | 현재 데이터베이스의 컬렉션 목록 출력 |
| show profile | system.profile 정보 출력 |
| show users | 현재 데이터베이스의 사용자 목록 출력 |
| show roles | 현재 데이터베이스의 역할(roles) 목록 출력 |
| show log <type> | 현재 연결의 로그 출력 (type이 설정되지 않으면 'global' 사용) |
| show logs | 모든 로그 출력 |
| exit, exit(), .exit | MongoDB Shell 종료 |
| quit, quit() | MongoDB Shell 종료 |
| Mongo | 새 연결을 생성하고 Mongo 객체 반환 |
| connect | 새 연결을 생성하고 Database 객체 반환 |
| it | 마지막으로 실행된 명령어의 결과 반환 (추가 반복(iterate) 가능) |
| version | Shell 버전 정보 출력 |
| load <file.js> | 지정한 JavaScript 파일을 로드하고 실행 |
| enableTelemetry | 익명 사용 데이터 수집 활성화 |
| disableTelemetry | 익명 사용 데이터 수집 비활성화 |
| passwordPrompt | 사용자 비밀번호 입력 프롬프트 표시 |
| sleep <ms> | 지정한 밀리초(ms) 동안 대기 |
| print <object> | 객체 내용을 출력 |
| printjson <object> | print()의 별칭(Alias)으로, JSON 형식으로 객체 출력 |
| convertShardKeyToHashed <value> | 입력값을 해시된 샤드 키로 변환 |
| cls | 콘솔 화면 정리 (JavaScript console.clear()와 동일) |
| isInteractive | Shell이 대화형 모드인지 여부 반환 |
다음 MongoDB 문서를 참고하면 mongosh에서 사용할 수 있는 도움말 기능에 대한 개요를 확인할 수 있습니다:
MongoDB Shell 도움말 기능 문서
로컬 머신에 mongosh를 설치하는 자세한 방법은 다음 문서를 참조하세요:
MongoDB Shell 설치 문서
mongosh vs 기존 mongo 쉘
mongosh는 기존 mongo 쉘(mongo)보다 다양한 이점을 제공합니다.
- 지능형 자동 완성(Intelligent Auto-Complete):
명령어를 입력할 때 Tab 키를 사용하면 명령어 문법에 대한 도움을 받을 수 있습니다. - 구문 강조(Syntax Highlighting):
명령어 입력 및 결과 확인 시, 컬러 코드 및 가독성 높은 포맷(pretty-print formatting) 을 지원하여 코드 가독성이 향상됩니다. - 로깅(Logging):
MongoDB Shell은 ndjson 형식을 사용하여 세션 로그를 저장합니다.
로그 ID를 기반으로 특정 세션의 로그를 확인하거나 tail할 수 있습니다. - 기존 방법과의 호환성(Legacy Method Compatibility):
기존 mongo 쉘의 문법과 동일한 방식으로 레거시 메서드를 지원하여 이전 버전과의 호환성을 유지합니다.
mongosh의 주요 기능
mongosh는 데이터베이스 관리자(DBA)와 개발자 모두에게 유용한 도구이며, MongoDB와의 상호작용을 더욱 효율적으로 만들어줍니다. mongosh를 사용하면서 다양한 기능을 활용하여 데이터베이스 및 컬렉션을 효과적으로 관리할 수 있습니다.
1. 관리(Administrative) 메서드 지원
데이터베이스 관리 및 클러스터 구성 문제 해결을 위해 다양한 관리 명령어를 실행할 수 있습니다. 예를 들어, 특정 역할을 가진 새로운 사용자를 생성하는 명령어는 다음과 같습니다:
org> db.runCommand({
createUser: "mark",
pwd: "test123",
roles: [
{ role: "dbOwner", db: "admin" }
]
})
{ ok: 1 }
2. 스크립트 작성
mongosh를 사용하면 MongoDB에서 데이터를 수정하거나 클러스터에서 관리 작업을 수행하는 스크립트를 작성할 수 있습니다.
스크립트는 코드의 배포, 관리, 재사용성을 향상시키는 데 유용합니다.
mongosh는 Node.js REPL 환경이므로, Node.js 코드를 실행하여 원하는 작업을 수행할 수 있습니다.
mongosh 내에서 load() 메서드를 사용하여 JavaScript 파일을 실행할 수 있습니다.
mongosh> load("connect-and-insert.js")
또한, mongosh에 로그인하기 전에 명령줄에서 파일을 직접 실행할 수도 있습니다.
mongosh --file loadMovies.js
이 방법을 활용하면, 데이터베이스를 미리 정의된 컬렉션, 문서, 인덱스로 초기화할 수 있습니다.
또한, 예약 작업(Scheduled Tasks) 또는 데이터 마이그레이션을 수행할 때도 유용합니다.
특히, 복잡한 쿼리를 스크립트로 작성하면 문서화 및 코드 재사용성이 향상됩니다.
3. Shell 로그 조회
mongosh는 ndjson 형식을 사용하여 세션 로그를 저장합니다.
mongosh 버전 1.0.5부터는 MongoDB 서버의 로그 형식과 동일하게 업데이트되었습니다.
mongosh 로그 조회 방법
- mongosh가 시작될 때 로그 ID가 터미널 또는 명령 프롬프트에 표시됩니다.
- 해당 로그 ID를 기반으로 로그를 확인하거나 tail할 수 있습니다.
- MongoDB Shell 로그는 사용자의 홈 디렉터리 하위 폴더에 저장되며, 파일명은 로그 ID와 동일합니다.
- cat 같은 표준 텍스트 처리 도구를 사용하여 로그를 확인할 수 있습니다.
4. 명령어 편집기(Editor)로 사용
mongosh에서는 기본적으로 한 번에 하나의 명령어만 실행할 수 있습니다.
그러나 여러 개의 작업을 수행해야 하는 경우, 스크립트를 실행하거나 멀티라인 입력을 지원하는 편집기를 사용할 수 있습니다.
mongosh 내장 편집기 사용 방법
기본 편집기 설정:
config.set("editor", "vi")
설정한 편집기 실행:
edit
mongosh의 내장 편집기 사용:
.editor
입력 완료 후 실행:
Ctrl + D 를 눌러 편집기 종료 후 명령 실행
이 기능을 활용하면 멀티라인 쿼리 및 함수 정의를 쉽게 관리할 수 있습니다.
mongosh의 주요 사용 사례
mongosh는 현대적이고 사용하기 쉬우며 다양한 기능을 갖춘 대화형 도구로, 다음과 같은 경우에 특히 유용합니다.
- 대화형 데이터베이스 탐색 및 쿼리 실행
MongoDB 데이터베이스를 대화형으로 탐색할 수 있습니다.
쿼리를 실행하고, 문서를 확인하며, 다양한 명령어를 실험할 수 있습니다. - 데이터베이스 관리 및 운영
데이터베이스, 컬렉션, 인덱스를 생성하는 등 관리 작업을 수행할 수 있습니다.
데이터베이스 구조를 설정하는 데 특히 유용합니다. - 데이터 조작
문서 삽입, 업데이트, 삭제를 통해 컬렉션 내 데이터를 직접 조작할 수 있습니다. - 스크립팅 및 자동화
반복적인 작업(예: 데이터 마이그레이션, 백업, 유지보수 작업)을 자동화하는 스크립트를 작성할 수 있습니다. - Aggregation 프레임워크 활용
MongoDB Aggregation Framework를 지원하여, 복잡한 데이터 변환 및 분석 작업을 수행할 수 있습니다. - 레플리카 셋 및 샤딩 클러스터 관리
레플리카 셋 및 샤드 클러스터의 상태를 확인하고, 장애 조치(Failover) 관리 등을 수행할 수 있습니다. - 성능 분석 및 모니터링
db.serverStatus(), db.stats() 등의 명령어를 통해 MongoDB의 성능을 모니터링할 수 있습니다.
mongosh 사용을 위한 베스트 프랙티스
- 정기적인 설치 및 업데이트
최신 기능, 성능 향상, 버그 수정 사항을 적용하기 위해 mongosh를 최신 버전으로 유지하세요. - 연결 문자열(Connection String) 사용
개별 연결 매개변수를 지정하는 대신, MongoDB 연결 문자열(Connection String)을 사용하면 연결 설정을 더 쉽고 효율적으로 관리할 수 있습니다. - 코드 작성 효율성 극대화
자동 완성(Intelligent Autocomplete) 및 구문 강조(Syntax Highlighting) 기능을 활용하여 명령어를 쉽고 빠르게 탐색하고 실행하세요. - 출력 결과 이해하기
find() 및 aggregate() 같은 명령어는 큰 데이터를 반환할 수 있으므로, cursor 메서드(forEach() 등)를 사용하여 출력을 효율적으로 관리하세요. - 도움말 명령어 활용
help 명령어를 사용하면 지원되는 명령어, 구문, 사용 예제를 확인할 수 있습니다. - 안전한 환경에서 실험하기
운영 환경에 변경 사항을 적용하기 전에, 테스트 또는 개발 환경에서 먼저 실행해보는 것이 좋습니다. - 보안 최적화
MongoDB에 연결할 때는 적절한 인증(Authentication) 및 권한 관리(Authorization)를 적용하여 보안성을 유지하세요. - 데이터 백업 수행
데이터 손실을 방지하기 위해, 잠재적으로 위험한 작업을 수행하기 전에 반드시 데이터를 백업하세요.
MongoDB CLI
MongoDB CLI는 최신 명령줄 인터페이스 도구로, 터미널에서 MongoDB 서비스를 관리할 수 있도록 도와줍니다.
이를 통해 Atlas, Cloud Manager, Ops Manager에서 MongoDB 클러스터를 배포하고 관리할 수 있습니다.
설치 방법
MongoDB CLI는 공식 웹사이트에서 다운로드할 수 있습니다.
다운로드 링크: MongoDB CLI 다운로드
설치가 완료되면, Atlas, Cloud Manager, Ops Manager의 클러스터를 원격으로 관리할 수 있습니다.
설정 및 인증
MongoDB CLI를 클러스터에 연결하려면 다음 단계를 따르세요.
1. API 키 생성: Atlas UI에서 API 키를 생성하여 조직 또는 프로젝트에 프로그래밍 방식으로 액세스할 수 있도록 합니다.
2. 프로젝트 생성:
기존 프로젝트가 없다면 새 프로젝트를 생성하세요.
프로젝트는 클러스터, 사용자, 설정, 환경 등을 그룹화하는 데 사용됩니다.
3. 연결 설정: IP 주소 또는 CIDR 블록을 MongoDB 서비스의 API 액세스 목록에 추가하세요.
4. 프로필 설정: 위의 단계를 완료한 후, 터미널에서 다음 명령어를 실행하여 프로필을 생성합니다.
~ mongocli config
이 명령어를 실행하면, MongoDB CLI 프로필이 설정됩니다.
설정 과정에서 공개 및 비공개 API 키, 조직 정보, 프로젝트 정보를 입력할 수 있습니다.
참고: 기본적으로 MongoDB CLI는 설정 정보를 ~/.config/mongocli.toml 파일에 저장합니다.
MongoDB CLI 사용 방법
프로필을 생성한 후, MongoDB CLI를 사용하여 Atlas 클러스터에 액세스하고,
Atlas GUI에서 수행하는 작업을 명령어를 통해 스크립트로 실행할 수 있습니다.
데이터베이스 사용자 조회
구성된 클러스터에서 데이터베이스 사용자 목록과 역할을 확인하려면 다음 명령어를 실행하세요.
Packt Server $ mongocli atlas dbusers list
결과 예시:
[
{
"databaseName": "admin",
"ldapAuthType": "NONE",
"x509Type": "NONE",
"awsIAMType": "NONE",
"groupId": "620173c921b1ab3de3e83610",
"roles": [
{
"roleName": "readWriteAnyDatabase",
"databaseName": "admin"
}
],
"scopes": [],
"username": "admin"
}
]
IP 주소를 이용한 데이터베이스 액세스 설정
MongoDB Atlas의 보안 정책상, 기본적으로 외부 연결이 차단되어 있습니다.(관리자 IP도 기본적으로 차단됨)
현재 사용 중인 IP에서 데이터베이스에 연결하려면, 다음 명령어를 실행하세요.
mongocli atlas accessLists create --currentIp
결과 예시:
{
"links": [
{
"rel": "self",
"href": "https://cloud.mongodb.com/api/atlas/v1.0/groups"
}
],
"results": [
{
"cidrBlock": "A.B.C.D/32",
"comment": "My IP Address",
"groupId": "620173c921b1ab3de3e8e610",
"ipAddress": "A.B.C.D"
}
],
"totalCount": 1
}
IP 블록 및 서브넷 추가/삭제
MongoDB CLI를 사용하면 MongoDB Atlas에 접속할 수 있는 IP 블록을 추가, 수정, 삭제할 수 있습니다.
예를 들어, 192.168.1.0을 추가하면, 192.168.1.X 범위의 IP에서 연결할 수 있습니다.
인증 설정(mongocli auth)
MongoDB CLI를 사용하면, Atlas 및 Cloud Manager의 인증 상태를 관리할 수 있습니다.
로그인
Atlas 인증:
mongocli auth login
Cloud Manager 인증:
mongocli auth login --cm
로그아웃
mongocli logout
참고:
MongoDB CLI에서는 단수 및 복수형 명령어를 모두 허용합니다.
예를 들어, 다음 두 명령어는 동일한 동작을 수행합니다.
mongocli atlas accessList create
mongocli atlas accessLists create
MongoDB CLI 주요 기능
MongoDB CLI는 GUI 없이 명령줄에서 MongoDB를 관리하고 운영할 수 있는 강력한 도구입니다.
주요 기능은 다음과 같습니다.
- 클러스터 관리
MongoDB 클러스터 생성, 업데이트, 삭제 등을 명령어로 실행할 수 있습니다. - 데이터베이스 작업
명령줄에서 직접 데이터베이스, 컬렉션, 문서 생성 및 데이터 조회, 수정, 삭제 작업을 수행할 수 있습니다. - 데이터 가져오기 및 내보내기
.json, .csv 등 다양한 형식으로 MongoDB 데이터 가져오기 및 내보내기가 가능합니다.
환경 간 데이터 마이그레이션 또는 데이터 백업 및 복원에 유용합니다. - 사용자 및 역할 관리
MongoDB 사용자 및 역할을 관리하여 인증 및 권한 부여(Authorization) 설정이 가능합니다.
사용자 생성, 역할 할당, 사용자 자격 증명 업데이트 등의 작업을 수행할 수 있습니다. - 다른 도구와의 통합
MongoDB CLI를 자동화 및 오케스트레이션 스크립트에 포함하여 배포 작업을 효율적으로 수행할 수 있습니다.
MongoDB CLI 활용 사례
MongoDB CLI는 클라우드 기반의 MongoDB 솔루션을 관리하는 데 유용합니다.
주요 활용 사례는 다음과 같습니다.
- MongoDB Atlas 클러스터 생성, 업데이트 및 관리
- 로컬 환경과 MongoDB Atlas 간 데이터 이동
- 데이터베이스 사용자, 역할 및 액세스 제어 설정 관리
- 클러스터 상태 및 성능 모니터링, 유지보수 작업 수행
- 기존 자동화 워크플로우에 MongoDB Atlas 관리 기능 통합
MongoDB CLI 사용 시 최적의 모범 사례(Best practices)
MongoDB CLI를 효율적으로 활용하기 위한 베스트 프랙티스는 다음과 같습니다.
- 인증 및 권한 설정 철저히 관리
MongoDB Atlas와 함께 사용할 때, 적절한 인증 및 권한 설정을 유지해야 합니다.
보안 강화를 위해 최소 권한 원칙(Principle of Least Privilege, PoLP)을 준수하세요. - 클러스터 자동화 및 유지보수 작업 수행
MongoDB CLI를 활용하여 클러스터 생성 및 관리를 자동화하세요.
클러스터 크기 조정 및 업그레이드 등 유지보수 작업도 명령줄에서 수행할 수 있습니다. - 정기적인 데이터 백업
MongoDB CLI를 사용하여 데이터를 주기적으로 백업하고, 필요 시 복원할 수 있도록 설정하세요. - 사용자 및 역할 관리 자동화
MongoDB CLI를 활용해 사용자 및 역할을 자동으로 관리하세요.
각 사용자에게 최소한의 권한만 부여하여 보안성을 높이세요. - CI/CD 파이프라인에 MongoDB CLI 통합
CI/CD(지속적 통합 및 배포) 파이프라인에서 MongoDB CLI를 활용하여 데이터베이스 관련 작업을 자동화하세요.
스크립트를 사용하여 다른 툴과 연동함으로써 개발 및 배포 프로세스를 간소화할 수 있습니다.
MongoDB Compass
MongoDB Compass는 MongoDB 데이터 관리, 쿼리 작성 및 데이터 시각화를 단순화하는 강력하고 직관적인 GUI 도구입니다.
CLI(명령줄 인터페이스) 대신 비주얼 UI 기반의 데이터 탐색 기능을 제공합니다.
- CRUD(생성, 읽기, 수정, 삭제) 작업을 쉽게 수행 가능
- 데이터 및 컬렉션을 탐색하고 분석 가능
- 복잡한 쿼리를 직접 작성하지 않아도 실행 가능
- 쿼리 및 인덱스 성능을 시각적으로 분석 가능
- TLS 암호화 연결을 통한 보안 유지
- 플러그인 API 제공 (데이터 가져오기 및 확장 개발 가능)
- 읽기 전용(읽기 전용 에디션) 및 특정 서버 제한(격리 버전) 기능 제공
MongoDB Compass 설치 방법
- MongoDB Compass는 Windows, macOS, Red Hat, Ubuntu에서 무료로 다운로드 가능
다운로드 링크: MongoDB Compass 공식 문서 - 다운로드 후 설치 프로그램을 실행하여 MongoDB Compass 설치 완료
설정(Configuration)
로컬 또는 원격 MongoDB 클러스터나 MongoDB Atlas에 호스팅된 배포 환경에 연결하려면 연결 문자열 스킴(Connection String Scheme)을 설정해야 합니다.
- 연결 방식 선택
로컬 MongoDB에 연결할 경우 → mongodb 스키마 선택
MongoDB Atlas 배포 환경에 연결할 경우 → mongodb+srv 스키마 사용 - MongoDB Compass에서 연결 설정
MongoDB Compass를 실행하면 새 연결을 위한 창이 나타납니다.
연결 URI를 입력하거나 호스트명, 포트, 인증 정보를 직접 입력하여 연결 설정을 구성할 수 있습니다.
추가적인 연결 설정이 필요한 경우, 각 탭을 선택하여 세부 정보를 입력하세요. - 연결하기
Connect 버튼 클릭 → MongoDB 인스턴스에 즉시 연결
Save & Connect 버튼 클릭 → 설정을 저장한 후 연결

MongoDB Compass를 사용하여 데이터 시각적으로 탐색하기
MongoDB Compass에 데이터베이스를 연결한 후, 다양한 데이터 관리 작업을 수행할 수 있습니다.
- 데이터 가져오기 및 관리
CSV 또는 JSON 파일을 가져와 MongoDB 클러스터에 데이터 추가
사용하기 쉬운 인터페이스를 통해 데이터 관리 - 데이터 필터링 및 탐색
애드혹(Ad hoc) 쿼리 작성 → 원하는 데이터만 필터링
컬렉션 내 데이터 트렌드 및 공통점 분석 - 집계(Aggregation) 기능 활용
Aggregation Pipeline 작성: 컬렉션의 문서를 여러 단계(Stage)로 처리
최종적으로 집계된 결과(aggregated results) 생성
시각적 집계 파이프라인 빌더 제공 → 복잡한 데이터 처리도 쉽게 수행 - 내장된 MongoDB Shell 활용
JavaScript 환경에서 명령어 실행 가능
데이터 조작 및 관리 작업을 명령어 기반으로 수행
MongoDB Compass에 클러스터를 연결하면 Figure 3.2에서 보듯이 왼쪽 탐색 바(Navigation Bar) 에 모든 데이터베이스 목록이 표시됩니다. 원하는 데이터베이스를 선택하면 해당 데이터베이스의 컬렉션 목록을 확인할 수 있습니다.

MongoDB Compass에서 컬렉션 조회 및 쿼리 실행
- 컬렉션 선택 및 데이터 조회
특정 컬렉션을 선택하면, 샘플 데이터가 표시되며 쿼리 입력 창(query textbox) 을 통해 데이터를 조회할 수 있습니다. - 실시간 쿼리 실행 및 최적화 제안
최신 버전의 Compass에서는 쿼리 실행 시 인사이트(Insights) 제공 - 예시: Figure 3.3에서 org 데이터베이스의 employees 컬렉션에서
- lastname 값이 "nair"가 아닌 문서를 조회하는 쿼리 실행
- 입력 중 오른쪽 창에 "인덱스 추가(Index Addition) 추천 팝업" 표시
- 쿼리 최적화를 위해 인덱스를 추가할 수 있도록 제안

컬렉션 관리 기능
- Schema 탭: 컬렉션 내 필드 목록 및 데이터 분포 비율 확인
- Indexes 탭: 컬렉션에서 인덱스 추가 및 조회
- Validation 탭:
- 문서의 데이터 구조를 제어하는 규칙 추가 가능
- 데이터 삽입 및 업데이트 시 유효성 검증 적용
MongoDB Compass의 주요 기능
- 시각적 데이터 탐색: 트리 구조로 데이터를 쉽게 탐색하고 문서 및 중첩 필드를 확인 가능
- 쿼리 빌더: 직관적인 인터페이스를 통해 복잡한 쿼리를 클릭만으로 생성
- 실시간 성능 모니터링: 쿼리 실행 시간, 인덱스 사용 현황 등을 분석하여 성능 최적화
- 스키마 분석: 데이터 구조를 자동으로 시각화하여 제공
- 데이터 시각화: 차트 및 그래프 생성 가능, 데이터 분석 및 보고에 활용
- 인덱스 관리: 인덱스 생성, 수정, 분석 가능하여 쿼리 성능 최적화
- 집계 파이프라인 빌더: 데이터 변환 및 분석을 위한 집계 파이프라인을 쉽게 구성
MongoDB Compass 활용 사례
- 데이터베이스 탐색: GUI 기반의 직관적인 쿼리 빌더로 데이터 필터링 및 검색
- 컬렉션 및 문서 구조 설계: Compass 스키마 뷰를 통해 데이터 구조 시각화
- 복잡한 집계 파이프라인 구축: 데이터 변환 및 분석을 위한 파이프라인 시각화
- 쿼리 성능 분석 및 최적화: 실행 계획을 확인하여 쿼리 성능 최적화
- 사용자 및 권한 관리: 인증 및 권한 관리 기능 제공
MongoDB Compass 사용을 위한 모범 사례
- 보안 연결: 적절한 연결 설정과 인증을 사용하여 MongoDB 인스턴스에 항상 보안 연결
- 정기적 업데이트: 최신 기능, 개선 사항, 버그 수정을 위해 MongoDB Compass를 정기적으로 업데이트
- 데이터 백업: 중요한 변경을 하기 전에 데이터 손실을 방지하기 위해 백업을 생성하고, 관리 작업이나 쿼리 테스트 시 개발 또는 스테이징 환경에서 수행
- 인덱스 관리: Compass의 인덱스 탭을 사용하여 기존 인덱스를 확인하고 최적화할 부분을 식별
- 쿼리 빌더 활용: 필터링, 정렬, 프로젝션 등의 기능을 사용하여 필요한 데이터를 효과적으로 검색
- 실험 환경 활용: Compass 기능을 실험할 때 샘플 문서를 사용하거나 테스트 데이터셋을 만들어 운영 데이터에 영향을 주지 않도록 주의
MongoDB for VS Code
MongoDB는 VS Code 내에서 데이터를 직접 작업할 수 있게 해주는 MongoDB for VS Code 확장 프로그램을 제공합니다. 이 확장 프로그램을 사용하면 강력한 기능과 확장성을 갖춘 VS Code에서 MongoDB 데이터베이스를 원활하게 사용할 수 있습니다.
설치 방법
- Visual Studio Code 설치: https://code.visualstudio.com/ 에서 Visual Studio Code 설치 프로그램을 다운로드하고 설치합니다.
- 확장 프로그램 뷰 열기: 활동 바에서 확장 아이콘을 클릭하여 확장 프로그램 뷰를 엽니다.
- 단축키 사용: Ctrl + Shift + X 또는 Cmd + Shift + X를 눌러 확장 프로그램 뷰를 열 수 있습니다. 그 후, **확장 마켓플레이스에서 'MongoDB for VS Code'**를 검색합니다.
- 확장 프로그램 설치: MongoDB for VS Code 확장 프로그램을 선택하고 설치를 클릭합니다.
- 설치 완료 후 관리: 설치가 완료되면 설치 버튼이 관리 기어 아이콘으로 변경됩니다.
Playground을 사용하여 데이터 탐색
MongoDB for VS Code를 설치한 후, 배포된 데이터를 보고 Playground를 생성하여 데이터와 상호작용할 수 있습니다. MongoDB Playground는 JavaScript 환경으로, 쿼리, 집계 및 MongoDB 명령을 구문 강조와 함께 프로토타입할 수 있는 장소입니다. 새로운 Playground는 Playgrounds 패널, MongoDB for VS Code 개요 페이지, 또는 Microsoft VS Code Command Palette에서 생성할 수 있습니다.

Terraform을 사용하여 Atlas 클러스터 생성
Atlas 계정에 API 키가 있고 Terraform이 설치된 경우, MongoDB for VS Code 확장 프로그램에 포함된 Atlas 템플릿을 사용하여 Shared Tier Atlas 클러스터를 생성할 수 있습니다. 템플릿을 불러온 후 클러스터를 구성하고 Atlas 계정에 대한 세부 정보를 입력합니다. 이제 Terraform 명령어를 사용하여 Atlas 클러스터를 계획, 적용 또는 삭제할 수 있습니다.
주요 기능
MongoDB for VS Code 확장 프로그램은 VS Code 내에서 애플리케이션 개발을 변화시키며, 다음과 같은 중요한 기능을 제공합니다:
- MongoDB Shell과 VS Code 통합을 통한 개발 능력 향상, 그리고 MongoDB의 확장 인터페이스로 VS Code 사용
- MongoDB 쿼리 및 명령어에 대한 자동 완성 및 구문 강조
- MongoDB 데이터베이스와의 연결 관리 간소화, JSON 편집 및 CRUD 작업 지원
- 복잡한 MongoDB 쿼리를 구성하기 위한 데이터베이스 구조 및 컬렉션을 시각화하는 트리 뷰와 사이드바 패널 옵션을 갖춘 그래픽 인터페이스
- Shared Tier Atlas 클러스터 생성을 위한 Atlas 템플릿을 Terraform에서 사용 지원
MongoDB for VS Code 확장 프로그램의 사용 사례
MongoDB for VS Code 확장 프로그램은 데이터베이스 상호작용, 스키마 설계, 쿼리 실행 등을 용이하게 해주는 강력한 도구입니다. MongoDB for VS Code 확장 프로그램을 사용하면 다음과 같은 작업을 할 수 있습니다:
- 다른 도구나 인터페이스를 전환하지 않고 MongoDB 쿼리를 빠르게 프로토타입하고 테스트
- 데이터베이스 설계 및 이해를 돕기 위해 컬렉션과 문서의 구조를 시각화
- 인증을 포함한 연결 설정 구성 및 관리
- 쿼리를 빠르게 실행하고 MongoDB 컬렉션을 탐색하여 데이터를 검색하고 분석
- 데이터베이스 및 컬렉션 생성, 삭제, 수정과 같은 관리 작업 수행
- 데이터 변환, 형식화 및 계산 실험
MongoDB for VS Code 확장 프로그램의 사용 모범 사례
MongoDB for VS Code 확장 프로그램을 사용할 때 다음과 같은 모범 사례를 따르는 것이 좋습니다:
- 코드 스니펫 및 실험을 버전 관리 시스템에 저장하여 변경 사항을 추적하고 협업
- MongoDB Playground의 구문 및 기능을 익혀서 유용성을 극대화
- MongoDB Playground를 정기적으로 업데이트하여 최신 기능과 개선 사항을 사용
- 쿼리를 효율적으로 작성할 수 있도록 MongoDB IntelliSense 기능(자동 완성, 구문 강조, 제안)을 활용
요약 (Summary)
이 장에서는 다양한 MongoDB 개발자 도구를 살펴보고 이를 사용하여 생산성을 높이는 방법을 배웠습니다. 이 장에서는 MongoDB 데이터베이스에 직접 연결하는 명령줄 인터페이스인 MongoDB Shell—mongosh에 대해 소개했습니다. 그 후, 클라우드 기반 MongoDB Atlas 클러스터에 연결할 수 있는 명령줄 인터페이스인 MongoDB CLI에 대해 배웠습니다. 이후, 직관적이고 시각적으로 데이터를 표현하는 강력한 GUI 도구인 MongoDB Compass를 탐구했습니다. 마지막으로 MongoDB 개발 기능과 코드 편집기의 능력을 결합한 MongoDB for VS Code 확장 프로그램을 살펴보았습니다. 이 장에서는 각 도구의 중요성이 그들의 기능, 사용 사례, 그리고 모범 사례와 함께 강조되었습니다.
4장인 MongoDB에 연결하기에서는 MongoDB의 다양한 언어 측면을 탐구할 것입니다. 이 장에서는 Ruby, PHP, Python, Node.js에서의 직접적인 드라이버 방법, ODM 라이브러리 및 MongoDB 통합에 대해 안내할 것입니다.
'T. > Mastering MongoDB 7.0' 카테고리의 다른 글
| 5. CRUD Operations and Basic Queries (0) | 2025.03.10 |
|---|---|
| 4. Connecting to MongoDB (0) | 2025.03.10 |
| 2. The MongoDB Architecture (0) | 2025.03.10 |
| 1. Introduction to MongoDB (2) | 2025.03.10 |
| 0. 관련 자료와 용례 (0) | 2025.03.10 |