성장에 목마른 코린이

MongoDB CRUD - Create 본문

CodeStates/Section 3 (백엔드)

MongoDB CRUD - Create

성장하는 코린이 2022. 4. 17. 04:50
728x90

CREATE - insert 명령어

각 도큐먼트의 고유의 값인 _id와 새로운 도큐먼트를 추가하는 방법

insert를 이용하여 도큐먼트를 삽입하기 위해서는 괄호 안에 삽입하고자 하는 도큐먼트를 작성합니다.

그리고 이 명령어에 따른 결과물이 하단에 WriteResult로 출력됩니다.

 

살펴보니 “nInserted”라는 항목이 존재합니다. 이 항목은 삽입된 도큐먼트의 수를 의미합니다.

이 부분이 0인 것으로 보아, 삽입된 도큐먼트가 없다는 뜻이므로 도큐먼트 추가에 실패했다는 것을 알 수 있습니다.

아래 writeError라는 부분을 통해, duplicate key 에러라고 하는 이유로 추가가 되지 않았음을 알 수 있습니다.

이미 같은 _id 값을 가지는 도큐먼트가 존재하기 때문에 중복된 데이터는 삽입할 수 없다는 것을 의미합니다.

같은 데이터이지만 _id 값을 지운 도큐먼트를 zips 컬렉션에 추가

이번에도 마찬가지로 명령어에 따른 결과가 출력되었습니다.

결과를 보기 전에, 주황색 블록으로 작성된 부분에서는 _id 값을 볼 수 있습니다.

그러나 동일한 도큐먼트의 내용을 가지고 있지만,

아래 파란색 블록의 부분에서는 _id 값을 삭제한 후 삽입 작업을 실행하였습니다.

그 결과, WriteResult({“nInserted” : 1}) 로 zips 컬렉션에 작성한 1개의 도큐먼트가 삽입되었다는 것을 알 수 있습니다.

해당 필드를 사용하여 데이터를 찾기

같은 필드와 값으로 find 명령어를 이용해 검색을 해보겠습니다.

지금은 데이터를 조회하는 명령어라고 이해하면 됩니다. 검색을 해보니 2개의 결과가 출력됩니다. 


하나는 기존 데이터베이스에 존재하던 도큐먼트이고, 또 다른 하나는 방금 추가한 도큐먼트입니다.

두 결과의 유일한 차이점은 _id 값이고, 두 번째로 삽입한 도큐먼트에는 _id 필드값을 추가하지 않았음에도

도큐먼트가 삽입될 때 자동적으로 해당 값이 추가되었습니다.

그리고 기본 값으로 ObjectId를 생성하여 할당하였다는 것을 알 수 있었습니다.

이처럼 _id 값에 따라 도큐먼트가 구별된다는 것을 duplicate key 에러를 통해 다시 한번 확인했습니다.

이로써 insert를 통해 컬렉션에 도큐먼트를 추가할 수 있게 되었습니다.

한 개의 도큐먼트가 아니라, 한 번에 다수의 도큐먼트를 삽입하는 방법

한 번에 다수의 도큐먼트를 삽입하기 위해서는 배열 안에 해당하는 도큐먼트를 담아줘야 합니다.

배열 안 요소인 도큐먼트는 test라는 1개의 필드를 가지고 있고, _id 값은 주어지지 않았습니다.

따라서 inspections 컬렉션 내의 다른 도큐먼트와 구조상으로도, 내용상으로도 중복되지 않은 도큐먼트들입니다.

nInserted 필드의 3이라는 숫자로 보아 3개의 도큐먼트가 모두 다 추가된 것을 알 수 있습니다.

작업의 순서를 바꾸는 방법

순서를 바꾸기 위해서는 insert 명령어의 2번째 인자에 순서 옵션인 ordered를 추가해 주면 됩니다.

Comments