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의 특징인 고정된 스키마가 없기 때문에 각 도큐먼트들은 동적인 스키마를 갖고 있다. 즉, 서로 다른 데이터들을 가질 수 있다는 뜻이다.
장점
- 고정된 스키마가 없기 때문에 같은 컬렉션 내에서도 각각 다른 스키마를 가질 수 있다.
- 조인이 없다.
SQL vs. MongoDB
SQL | MongoDB |
---|
테이블 | 컬렉션 |
열 | 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