01.MongoDB 기초 - MongoDB 다루기

🌈 MongoDB 다루기
🔥 Robomongo 설치 및 설정
🔥 Robomongo로 MongoDB 다루기
🔥 Robomongo에서 shell 입력해보기
1. Robomongo 설치 및 설정
- Robomongo는 MongoDB를 다루는 GUI 툴이기 때문에 눈으로보면서 이해도를 높히기 좋음
1) Robomongo 설치
- 1단계 : 아래 주소 에서 운영체제에 맞게 다운로드우 설치
2) Robomongo 세팅
- 1단계 : 터미널에서 mongodb 실행(👉🏻 brew services start mongodb-community)

- 2단계 : Robmomongo 실행(아무것도 없는게 정상)

- 3단계 : Robomongo에서 create 클릭 후 localhost로 설정되어있는지 확인

- 4단계 : 특별한 문제 없으면, save 저장 후 오른쪽 아래 Connect 클릭

2. Robomongo로 MongoDB 다루기
1) database 생성
- connect로 생성된 "studymongodb"에 오른쪽 클릭으로 "Create Database"를 선택한 뒤, Database 이름 입력하면 database 생성됨
- "System"과 "config"는 자동으로 생성되어 있는 MongoDB의 DB임
- 아래 그림은 mydata라는 이름으로 DATABASE를 생선한 결과임
- Database 삭제는 해당 데이터베이스 오른쪽 클릭해서 Drop 선택하면 삭제됨

2) collection 만들기
- collection은 MySQL에서 table과 비슷한 기능을 하지만, RDBMS처럼 스키마의 규격이 없음
- 생성된 DATABASE인 mydb를 클릭하면 "Collection", "Function", "Users"이 자동으로 생성되 있음
- "Function"과 "Users"는 생성된 DABASE의 설정을 다루는 곳임
- collection을 생성하는 방법은 "Collection"을 오른쪽 클릭한 뒤, "Create Collection"으로 생성
- 아래 그림은 "mycollection"이라는 이름으로 collection을 생선한 결과임
- collection 삭제 또한 생성과 같이 오른쪽 클릭하여 GUI방식으로 손쉽게 제거 가능

3) 데이터 입력
- 생성된 collection인 "mycollection"을 오른쪽 클릭해 "Insert Document"로 들어가면 아래와 같은 화면이 나타남

- 이 화면은 데이터를 입력하는 창으로 JSON형식으로 데이터를 입력한 뒤, 저장하면 데이터를 삽입시킴
- 생성된 데이터를 확인하는 방법은 collection을 오른쪽 클린한 뒤, "View Documents"를 클릭하면 볼 수 있음

- "_id"값을 제외하고는 모두 입력한 데이터로 Type까지 자동으로 지정됨
- "_id"값은 데이터가 삽입 될 때마다 자동으로 생성되는 고유 식별값임
- Insert를 통해 계속 값을 추가할 수도 있고, KEY값은 데이터마다 자유롭게 지정 할 수 있음

- 또한 Robomongo는 MySQL Workbench보다 친절하게 명령어 구문을 자동으로 보여줌
3. Robomongo에서 shell 입력해보기
- shell에서 입력하는 방법은 추후 python을 통해 MongoDB를 다룰 때 사용됨
- MongoDB의 shell 명령어는 SQL문과 유사함
- MongoDB가 connect 되어있는 최상단("studymongodb")를 오른쪽 클릭해서 "Open Shell" 클릭하면 Shell 명령어를 입력할 수 있는 창("New shell 탭")이 활성화됨

1) 데이터베이스 모두 조회 : show dbs
- 🔍 show dbs 를 입력한 뒤 ▶️버튼을 누르면 아래와 같이 실행됨
- "mydb"는 방금 생성한 DATABASE이며, 나머지는 robomongo 설정과 관련된 DB임

2) 데이터베이스 선택(지정) : use [데이터베이스 이름]
- 🔍 use mydb 입력한 뒤 ▶️버튼을 누르면 아래와 같이 실행됨
- 콜렉션을 조회하거나 다루기 위해서는 어떤 DB를 제어할 것인지 선택 후 가능

3) 컬렉션 모두 조회 : show [컬렉션 이름]
- 🔍 show collections 입력한 뒤 ▶️버튼을 누르면 아래와 같이 실행됨
- 현재 지정된 DB("mydb")에 존재하는 모든 컬렉션들을 반환함
4) 컬렉션 내 데이터 모두 조회 : db.[컬렉션 이름].find()
- 🔍 db.mycollection.find() ▶️버튼을 누르면 아래와 같이 실행됨
- 여기서 db는 위에서 선택된 데이터베이스 의미하며, 컬렉션을 지정해준 뒤 find() 메소드를 실행하면됨
- GUI를 이용하여 "View Document"를 클릭한 것과 같음
- find() 메소드에는 인자를 받을 수 있으며, 비워두면 저장된 모든 데이터를 출력

5) 데이터베이스의 통계 정보 조회 : db.stats()
- 🔍 db.stats() ▶️버튼을 누르면 아래와 같이 실행됨
- 데이터베이스에 대한 정보들을 종합적으로 보여줌

6) collection 생성 : db.createCollection("[콜렉션 이름]", {capped:true, size:10000})
- 🔍 db.createCollection("employees", {capped:true, size:10000}) ▶️(실행)
- 맨 앞에 db가 있다는 것은 위에서 설명한 것과 같이 "DB를 지정하였다."는 뜻이므로 DB를 먼저 지정 후 콜렉션 생성을 할 수 있음
- {}안에 들어가는 것은 컬렉션의 옵션으로 size는 db의 크기이고, capped는 최초 제한된 크기로 생성된 공간에서만 데이터를 저장한다는 설정임
- 이러한 옵션을 지정하는 것은 데이터가 입력할 때마다 size가 늘어나면 저장공간 관리에 따른 속도 지연이 발생하기 때문에 옵션을 통해 콜렉션의 성능을 향상시킬 수 있음
- 콜렉션을 생성한 후 바로 나타나지 않기 때문에 DATABASE를 오른쪽 클릭한 뒤 Refresh 해줘야 확인됨

7) 컬렉션 이름 변경 : db.[컬렉션 이름].renameCollection("변경할 이름")
- 🔍 db.employees.renameCollection("emp") ▶️(실행)
8) 컬렉션 삭제 : db.[컬렉션 이름].drop()