MongoDB의 특징과 사용 방법에 대해 기본적인 내용들을 정리해보았다.

  • MongoDB 특징
    • NoSQL 데이터베이스
      • 스키마 x
      • 느슨한 ACID
      • 수평 확장 가능(Scale out) → 주로 분산 아키텍처 위주
      • 객체 기반 API 제공
    • Document
      • BSON으로 데이터를 저장하기 때문에 Array나 Dict형 데이터 저장 용이
      • ObjectId
        • 고유값
        • 클라이언트에서 생성
        • 샤딩된 데이터를 빠르게 가져오기 위함
    • BASE
      • Basically Available
        • 기본적으로 언제든지 사용가능(가용성)
      • Soft state
        • DB 상태(테이블)가 바뀔 수 있음
      • Eventually consistent
        • 일시적으로 일관성(consistency)가 보장되지 않을 수 있음
        • 일정 시간이 지나면 유지됨
    • 분산 시스템 중시
  • 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 이용
      • 설치
      • 접속
        • uri를 직접 입력
          • mongodb://[username]:[password]@1.2.3.4:5555
        • advanced connection option으로 설정
          • host 주소, 인증 방법, SSH 등 여러가지 설정에 따라 uri를 자동으로 생성해줌
  • 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})
    • 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"})
    • DB collection 내부 데이터 삭제
      • find와 유사 - query 이용
        • db.[collection name].remove({name: "gom"})
    • collection 제거
      • db.[collection name].drop()
    • db 제거
      • db.dropDatabase()
  • 참조
ℹ️
gom(서민석)
한국 서버 개발