[MongoDB] MongoDB - Compass, Shell을 이용한 데이터 삽입 - (2)
저번 포스팅때 관계형, 비관계형 데이터베이스에 대해 알아보았고, 각각의 데이터베이스는 데이터들을 어떻게 저장하는지 배웠다. mongoDB는 대표적인 비관계형 데이터베이스로, 데이터들을 테이블에 저장하는 대신, collections, documents라고 불리우는 저장소에 데이터들을 저장 한다고 배웠다.
🛠️ MongoDB Compass
이번에는 mongoDB 컴파스를 이용해 좀 더 자세히 알아보자.

먼저, mongoDB compass를 다운받고 create 버튼을 누르면 위와 같이 아무 데이터도 존재하지 않는 모습이 보일 것이다.
다음으로, create database 버튼을 눌러 아래와 같이 새로운 데이터베이스를 만들어주고, 첫번째 컬렉션인 books도 지정 해준다.

bookstore라는 데이터베이스를 만들어 준 후, 옆에서 bookstore를 클릭 해보면 이렇게 안에 어떠한 컬렉션들이 있는지 살펴 볼 수 있다.

다음으로, bookstore 데이터베이스의 books 컬렉션을 클릭하여 데이터들을 추가 해보자.

이러한 dummy data를 추가해보자. 데이터를 추가 해보면 알겠지만, 위에서 id값을 지정해주지 않았는데도 불구하고 아래를 보면 자동으로 고유한 id값이 할당 되어있다.

다음으로, 아래 데이터를 한번 살펴보자. 위에서 저장했던 데이터와 달리, 아래는 [] 안에 여러개의 데이터들이 {}와 구분자 ,를 이용해 구분되어 있다. 이 말은, 단순히 {}로 감싸진 하나의 데이터가 아니라, []를 통해 배열 안에 여러개의 데이터들을 담을 수 있다는것을 의미한다.
[
{
"title": "The Final Empire",
"author": "Brandon Sanderson",
"pages": 450,
"genres": ["fantasy", "dystopian"],
"rating": 8
},
{
"title": "The Way of Kings",
"author": "Brandon Sanderson",
"pages": 350,
"genres": ["fantasy", "dystopian"],
"rating": 9
},
{
"title": "The Call of the Weird",
"author": "Louis Theroux",
"pages": 350,
"genres": ["non-fiction", "strange", "comedy"],
"rating": 7
}
]
이렇게 아래와 같이 데이터들이 성공적으로 추가 된 것을 확인 할 수 있다.

🛠️ MongoDB Shell
다음으로 알아볼 내용은 mongoDB Shell이다. 이 shell의 커맨드는 우리가 직접 소스 코드로 데이터베이스를 건드릴때의 소스 코드와 비슷하다.

이와 같이 따로 터미널을 열지 않고도 MongoDB Compass 애플리케이션에서 터미널을 열 수 있다. 여기서 한가지 살펴볼점이 있는데, 커맨드의 앞에 test>라고 되어 있는것을 볼 수 있다. 이 말은, 현재 우리가 'test'라는 데이터베이스 안에 있다는것을 의미하며, 위에서 만든 bookstore 데이터로 옮겨 가려면, 'use <저장소이름>' 과 같이 데이터베이스를 바꿔가며 작업 할 수 있다.

또한, 공부를 하던 중 흥미로운점 하나를 더 발견했는데, 그것은 바로 "데이터베이스가 이미 생성된 데이터베이스가 아니더라도'use <저장소이름>' 커맨드를 이용하면 저장소를 바꿀 수 있다.
이제, 위에서는 mongoDB의 컴파스를 이용해 데이터를 추가했는데, 이번에는 shell에서 데이터를 넣는 방법을 알아보자.
먼저, use bookstore를 이용해 bookstore 데이터베이스 안으로 이동했다. 이제, 이 데이터베이스 안에서 특정 컬렉션을 참조하려면 다음과 같은 커맨드를 사용하면 된다.
db.컬렉션 이름
여기서 db는 현재 데이터베이스를 참조하고, .컬렉션 이름으로 컬렉션을 참조 할 수 있다.
이 컬렉션에 데이터 하나를 추가하고싶다면
db.컬렉션 이름.insertOne({title: "The color", author : "Jay", pages : 300, rating : 7})
insertIOne()커맨드를 사용하여 파라미터로는 추가 하고자하는 값을 넘겨주면 된다.

위는 결과 화면인데, acknowledged : true는 내가 방금 보낸 요청이 성공적으로 처리 됨을 나타내고, insertId는 mongoDB가 자동으로 생성한 Id를 부여 한것이다.
여기서 또 한가지 흥미로운점은, 존재하지 않는 컬렉션에 데이터를 삽입해도 데이터가 들어간다는 것이다. 현재 bookstore 저장소에는 books라는 컬렉션 하나만 존재하는데, 다른 컬렉션에 데이터를 넣는 상황을 가정해보자.

여길 보면, db.author.insertOne을 했다. 여기서 author이라는 존재하지 않는 컬렉션인데도 불구하고 성공을 반환했다. 이제 MongoDB 컴파스로 돌아가 다시 컬렉션 목록을 확인해보면

이렇게 author가 생성되어 있다.
이번에는, 단 한가지의 데이터를 넣는게 아니라 여러개의 데이터를 한꺼번에 넣어보자.

insertMany 메서드를 이용해 [] 배열안에 {}로 구분지어진 각각의 document를 넣어 주었다.