2022.03.01

초보개발·2022년 3월 1일
0

TIL

목록 보기
17/17
post-thumbnail

MongoDB

MongoDB는 NoSQL DMBS 중 가장 유명한 데이터베이스이다. NoSQL은 사실, Not Only SQL의 뜻으로 기존의 RDBMS의 한계점을 극복하기 위해 만들어 졌다고 한다. RDBMS가 아니므로 고정된 스키마와 join이 없다.

Document

{
  _id: ObjectId("5099803df3f4948bd2f98391"),
  name: { first: "Alan", last: "Turing" },
  birth: new Date('Jun 23, 1912'),
  death: new Date('Jun 07, 1954'),
  contribs: [ "Turing machine", "Turing test", "Turingery" ],
  views : NumberLong(1250000)
}

도큐먼트는 튜플의 역할을 하는데 여기서 _id, name, birth, death, contribs, views가 key가 되고 그 뒤의 값들은 value가 된다.

  • _id는 데이터를 식별할 수 있는 12바이트 길이의 ObjectId를 담는다.

NoSQL의 특징인 고정된 스키마가 없기 때문에 각 도큐먼트들은 동적인 스키마를 갖고 있다. 즉, 서로 다른 데이터들을 가질 수 있다는 뜻이다.

장점

  1. 고정된 스키마가 없기 때문에 같은 컬렉션 내에서도 각각 다른 스키마를 가질 수 있다.
  2. 조인이 없다.

SQL vs. MongoDB

SQLMongoDB
테이블컬렉션
Document
컬럼필드
기본 키ObjectId
인덱스인덱스
보기보기
Embedded Documents포함 문서
배열배열

Query

  • 데이터베이스 생성: use DATABASE_NAME
  • 컬렉션 생성: db.createCollection(name, [options])
  • 컬렉션 제거: db.{collection_name}.drop( )
  • 도큐먼트 추가: db.{collection_name}.insert(document)
  • 컬렉션의 도큐먼트 리스트 확인: db.{collection_name}.find()
  • 도큐먼트 제거: db.{collection_name}.remove(criteria, [justOne])
    • criteria: 도큐먼트 타입, 삭제할 데이터의 기준 값이며 {}이면 모든 데이터 제거
    • justOne: boolean 타입, 이 값이 참이면 1개의 도큐먼트만 제거되며 디폴트 값은 거짓으로 criteria에 해당되는 모든 도큐먼트 제거
  • 도큐먼트 조회: db.{collection_name}.find([query], [projection])
    • query: 도큐먼트를 조회할 때 기준을 정함
    • projection: 도큐먼트를 조회할 때 보여질 필드를 정함

출처: https://docs.mongodb.com, https://velopert.com

0개의 댓글