MongoDB의 특징과 사용 방법에 대해 기본적인 내용들을 정리해보았다.
- MongoDB 특징
- NoSQL 데이터베이스
- 스키마 x
- 느슨한 ACID
- 수평 확장 가능(Scale out) → 주로 분산 아키텍처 위주
- 객체 기반 API 제공
- Document
- NoSQL 데이터베이스

- BSON으로 데이터를 저장하기 때문에 Array나 Dict형 데이터 저장 용이
- ObjectId
- 고유값
- 클라이언트에서 생성
- 샤딩된 데이터를 빠르게 가져오기 위함

- BASE
- Basically Available
- 기본적으로 언제든지 사용가능(가용성)
- Soft state
- DB 상태(테이블)가 바뀔 수 있음
- Eventually consistent
- 일시적으로 일관성(consistency)가 보장되지 않을 수 있음
- 일정 시간이 지나면 유지됨
- Basically Available
- 분산 시스템 중시
- MongoDB 접속
- Mongosh
- 설치 -
brew install mongodb-community@7.01
- 기본 접속
mongosh --host [host ip] --port [port num]
- username, password 인증이 필요한 경우
mongosh --host [host ip] --port [port num] -u [username] -p [password]
- 설치 -
- MongoDB Compass 이용
- 설치
- brew
brew install --cask mongodb-compass
- GUI
- brew
- 접속
- uri를 직접 입력
mongodb://[username]:[password]@1.2.3.4:5555
- advanced connection option으로 설정
- host 주소, 인증 방법, SSH 등 여러가지 설정에 따라 uri를 자동으로 생성해줌
- uri를 직접 입력
- 설치
- Mongosh

- MongoDB 명령어
- DB 목록 조회
show dbs
- 사용중인 DB 변경 명령어 - use
use [DB name]
- DB 내부 collection 목록 조회
show collections
- DB collection 내부 데이터 조회
- 검색(조건 x) / 데이터 한 개만 검색 → findone()
db.[collection name].find()
- 단순한 조건 검색(name=”gom” and age=22)
db.[collection name].find({name:"gom", age:22})
- 복잡한 조건 검색 (age <= 15 or height > 150)
db.[collection name].find({$or: [{"age" : {$lte: 15}}, {"height" : {$gt: 150}}]})
- 특정 키 값 unique 목록 조회 → 예. db내부의 unique한 name 목록
db.[collection name].distinct("name")
- 데이터 갯수 - 예. age=32인 data 개수
db.[collection name].count({age: 32})
- 검색(조건 x) / 데이터 한 개만 검색 → findone()
- DB collection 내부 데이터 변경
- 특정 id를 지닌 데이터 변경
db.[collection name].update({"_id": 1234}, {"age": 22})
- 특정 값을 지닌 데이터 변경
db.[collection name].update({"year":1999}, {"age": 22})
- 전체 데이터 변경
db.[collection name].update({}, {"country":"Korea"})
- 특정 id를 지닌 데이터 변경
- DB collection 내부 데이터 삭제
- find와 유사 - query 이용
db.[collection name].remove({name: "gom"})
- find와 유사 - query 이용
- collection 제거
db.[collection name].drop()
- db 제거
db.dropDatabase()
- DB 목록 조회
- 참조
ℹ️
gom(서민석)
한국 서버 개발
한국 서버 개발