MongoDB > 2. MySQL vs MongoDB, CRUD

본 글은 SW마에스트로 멘토링 이후 별도 학습 후 작성한 글입니다.


1. MySQL vs MongoDB

1.1. MongoDB의 장점

  • 스키마 정의가 필요없음 => 비구조화된 데이터를 다루기 용이함
  • 데이터베이스 확장이 매우 용이함
  • Object 기반의 JSON 객체 활용이 쉬움
  • 다양한 쿼리(Aggregate)와 분석을 지원함

1.2. 스키마, 데이터 타입, 데이터 저장, 언어, 구조

 MySQLMongoDB
스키마고정 / 관계형유연 / 비관계형
데이터 저장Table 형식JSON 형식의 문서(Document)
언어Mongo QuerySQL
구조샤딩 / 복제마스터-슬레이브 / 복제
최대 크기row별 63.99 KBdocument 별 16MB

1.3. ObjectID

  • 12byte 크기의 문자와 숫자로 구성된 값
  • ObjectID()의 값을 반환하면 12byte의 hexadecimal(16진수) 값으로 결과를 반환함

1.3.1. ObjectID의 각 자리의 의미

image

  1. Unix Timestamp (4 bytes) : Unix 시대에부터 초 단위로 측정된 값
  2. Random Value (5 bytes) : 랜덤으로 생성된 값
  3. Count (3 bytes) : 증가하는 count 값, 최초값은 랜덤으로 생성

2. MongoDB - CRUD Method

2.1. 생성(Create) - Insert

  • 데이터를 생성할 때 사용하는 명령어
  • insertOne() 혹은 insertMany() 메서드 사용 <!– - 생성하기 전 collection을 DB를 지정해 연결(use [데이터베이스명])시키고, collection을 생성(db.createCollection([컬렉션명])) 해두어야 함
  • key값은 쌍따옴표(““)를 입력해주어도 되고 안해주어도 상관없으나, value 값은 문자면 쌍따옴표를 입력해주고, 숫자면 그냥 작성해도 됨 –>

2.1.1. MongoDB Compass에서 실행한 Insert Document

image

2.1.2. SQL 구문과 비교

image

  • 새로운 컬렉션 생성 및 데이터 삽입을 위해 사용하는 명령어
  • find() 메서드 사용

2.2.1. MongoDB Compass에서 실행한 Find Document

image

2.2.2. 비교 문법

  • $and : and 조건을 통해 다수의 조건이 모두 만족하는 결과 출력
    • ex) { $and: [{code: 2, 23}, {city: 'seoul}] }
  • $or : or 조건을 통해 다수의 조건 중 하나라도 만족하는 결과 출력
  • $nor : 다수의 조건이 모두 거짓일 경우 만족하는 결과 출력
  • $not : 조건의 결과를 반대로 바꿈
  • $eq : ‘=’과 동일
  • $ne : not equal
  • $gt : 값이 다른 값보다 큼(초과)
    • ex) { count: { $gt: 5 } }
  • $gte : 값이 다른 값보다 크거나 같음(이상)
  • $lt : 값이 다른 값보다 작음(미만)
  • $lte : 값이 다른 값보다 작거나 같음(이하)
  • $in : 배열 내에서 일치하는 값
    • ex) { code: {$ln: [12, 23]} }
  • 그 외에도 $regex, $text, $where 등이 있음

2.2.3. 배열의 인덱스 접근

  • 예를 들어 scores.0.score 시 scores 배열의 0번째 원소의 score 값에 접근 가능

2.3. 수정(Update) - Update

  • document를 수정할 때 사용하는 명령어
  • updateOne() : 맨 처음으로 매칭되는 1개의 document를 수정하는 메서드
  • updateMany() : 매칭되는 모든 document를 수정하는 메서드

2.3.1. 필드 관련 문법

  • $set : 필드의 값을 설정
  • $currentDate : 현재 날짜로 설정
  • $inc : 필드의 값을 증가
  • $rename : 필드 이름 변경
  • $unset : document에서 필드 제거

2.3.2. Array 관련 문법

  • $addToSet : 배열에 고유 요소 추가
  • $pop : 배열의 첫 번째 혹은 마지막 요소를 제거(-1, 1)
  • $pull : 쿼리와 일치하는 배열에서 모든 요소를 제거
  • $push : 배열에 요소를 추가

2.4. 삭제(Drop) - Delete

  • document를 삭제할 때 사용하는 명령어
  • deleteOne() : 맨 처음으로 매칭되는 1개의 document 삭제
  • deleteMany() : 맨 처음으로 매칭되는 1개의 document 삭제

3. Reference