
도큐먼트를 shell을 이용하여 조회하거나 업데이트 할 때, 도큐먼트는 JSON(Javascript Object Notation)형식으로 출력된다.
JSON 형식으로 도큐먼트를 작성하기 위해서는 아래와 같은 조건을 만족해야 한다.


이 사진은 BSON의 형태이다.
컴퓨터의 언어에 가까운 이진법에 기반을 둔 표현법이기 때문에 JSON보다 메모리 사용에 효율적이며, 보다 빠르고, 가벼우며 유연하다.
뿐만 아니라 BSON의 사용으로 더 많은 데이터 타입을 사용할 수 있게 되었다.
따라서 MongoDB는 JSON형식으로 작성된 것은 무엇이든 데이터베이스에 추가할 수 있고, 쉽게 조회할 수 있지만, 속도, 효율성, 유연성의 장점이 있기 때문에 내부적으로 BSON 형식으로 데이터를 저장, 사용하고 있다.
BSON에 대해서 더 알아보도록 하자

MongoDB의 데이터는 BSON의 형태로 저장이 되고, 보통 읽기 쉬운 JSON의 형태로 출력된다.
그 이유가 단순히 백업 저장을 하기 위해서라면 가볍고 빠른 BSON의 형태를 사용하는 편이 좋고 데이터를 내보낸 후, 조회를 하거나 출력을 해야한다면 사람이 읽기 쉬운 JSON의 형식이 바람직하기 하기 때문이다.
그래서 조건에 따라, 가져오거나 내보낼 때 사용 가능한 명령어가 각각 존재한다.

각각의 형식으로 가져오고 내보내기 위한 명령어이다.

BSON의 형식의 데이터를 내보내기 위한 mongodump 명령어와
JSON의 형식의 데이터를 내보내기 위한 mongoexport 명령어 두 가지가 있다.
이를 사용하기 위해서 Atlas Cluster URI가 필요하다.
해당 URI는 일반 웹의 URI와 형식이 같고, username, password, cluster 주소로 이루어져 있다.
mongodump를 하는 경우에는 별다른 쿼리가 없지만,
mongoexport를 하는 경우에는 해당 데이터베이스의 컬렉션 이름, 파일 이름까지 정확하게 작성해줘야 한다.

mongodump 명령어를 통해 아틀라스 클러스터 안에 있는 sample_supplies 라는 데이터베이스를 로컬 머신으로 BSON 형식의 데이터로 내보냈다.
잘보내졌는지 확인을 해보니

터미널에서 확인 할 수 있듯이 dump라는 폴더 안에 sample_supplies 데이터베이스 폴더가 생성되었고, 그 안에는 다시 sales.bson 파일이 생긴 것을 볼 수 있다.
sales.bson이라는 파일을 열어보면 읽기 어려운 BSON형식의 데이터를 확인 할 수 있다.
읽기 쉬운 JSON 형식의 파일을 내보내는 mongoexport를 확인해보자

mongoexport를 사용하여, JSON 형식의 데이터를 내보낼 때에는 내보낼 컬렉션과 파일의 이름을 정확히 명시해야 한다.
로컬 머신으로 내보낸 sales.json 파일을 열어보면

sales.json 파일 안의 JSON형식의 데이터를 볼 수 있따.

가져오기 또한 두 가지로 나뉜다.
BSON 형식의 데이터를 가져올 경우에는 mongostore를 사용하며,
JSON 형식의 데이터를 가져올 경우, mongoimport를 사용한다.
export와 마찬가지로 URI를 사용해서 작성되며, 기존에 있는 데이터를 삭제하기 위한 옵션인 drop 쿼리문은 선택적으로 사용할 수 있다.

mongodump를 통해 가져온 BSON형식의 파일을 다시 mongostore를 통해 아틀라스 클러스터로 복원 시켜보자
아틀라스 클러스터 입장에서는 로컬 머신으로 내보냈던 dump 파일을 다시 가져가는 개념이다.
터미널에 done이라고 표시 되면서 mongostore가 완료됬다.
mongoimport를 확인해보면

mongostore와 마찬가지로 mongoimport는 데이터베이스를 다시 아틀라스 클러스터로 가져올 수 있게 한다.
이 때 적용되는 데이터의 형식은 JSON 뿐 아니라, csv와 같은 데이터 형식일 수도 있따.
그리고 파란색 블록에서는 해당 데이터가 삽입되는 컬렉션을 지정하지 않았지만,
아래 초록색 블록과 같이 컬렉션 이름을 지정하는 등의 부가적인 옵션을 추가 할 수 있따.