MongoDB는 대표적인 NoSQL 도큐먼트 데이터베이스다.
도큐먼트 데이터베이스
데이터를 테이블이 아닌 문서처럼 저장하는 데이터베이스
이러한 비관계형 데이터베이스는 다음과 같은 경우에 많이 사용한다.
객체 처럼 필드-값 쌍으로 저장하고 구성하는 방법
{ <filed> : <value>, <filed> : <value>, "name" : "Jetty" "title" : "Chapter" "age" : 25 }
JSON은 우리가 흔히 아는 방식으로 작성하는 것을 말한다. 이러한 JSON은 다음과 같은 특징을 가진다.
이러한 문제점을 해결하기 위해 등장한 것이 바로 BSON 형식이다.
BSON
- 컴퓨터의 언어에 가까운 이진법에 기반을 둔 표현법
- JSON보다 효율적이고 빠르고 가볍다.
- 더 많은 데이터 타입을 사용할 수 있다.
JSON : mongoimport(가져오기) / mongoexport(내보내기)
BSON : mongorestore(가져오기) / mongodump(내보내기)
mongoDB는 모든 도큐먼트가 _id
필드를 기본으로 가지고 있다. 이는 각 도큐먼트를 구별하는 역할을 한다.
_id
가 다르고 내용이 같다 해도 두 도큐먼트는 서로 다르다._id
가 같더라도 같은 도큐먼트로 여겨 에러가 발생한다.기본형
db.<컬렉션 이름>.insert(<도큐먼트>)
다음과 같은 형식으로 Create를 실시할 수 있다. 이후 writeResult
라는 객체를 통해 결과를 반환한다.
nInserted
: 삽입된 도큐먼트의 수writeError
: 삽입되지 않은 이유를 반환한다._id
값이 중복되어있다면 삽입되지 않는다._id
값을 주지 않고 실행하면 자동으로 _id
값을 배정한다.여러개의 도큐먼트 한번에 추가하기
db.<컬렉션 이름>.insert([<도큐먼트>, <도큐먼트>, <도큐먼트>, ...])
다음과 같이 도큐먼트를 배열의 형태로 넣을 수 있다.
단, 이는 순서대로 들어가기 때문에 만약 앞에서 에러가 발생한다면 나머지는 들어가지 못하게된다.
이를 방지하기 위해서 insert
의 두번째 인자로 ordered
를 추가해주면 된다.
db.<컬렉션 이름>.insert([<도큐먼트>, <도큐먼트>, ...], {order: false})
DB
show dbs
,use db
,show collections
조회문
db.<collection_name>.find(<쿼리문>)
db.<collection_name>.find()
: 모든 데이터를 조회
db.<collection_name>.find().pretty()
: 진짜 그냥 더 이쁘게 보이게 해준다.
db.<collection_name>.find().count()
: 데이터의 수를 조회
db.<컬렉션 이름>.[updateMany || updateOne](<쿼리문>,<update문>)
update문
pop
의 값을 6235로 만든다.scores
의 배열에 다음 객체를 삽입한다.
db.<컬렉션 이름>.[deleteOne || deleteMany](<쿼리문>)
컬렉션 삭제
db.<collection_name>.drop()