- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- First Project
- 리팩터링 2판
- 오늘도 개발자가 안된다고 말했다
- 아고라스테이츠
- TMIL
- Docker
- TIL
- 코딩테스트
- 배포
- sql
- 프로그래머스
- Refactoring
- LEVEL1
- react
- Git
- TWIL
- MariaDB
- LEVEL 1
- java
- javascript
- CRUD
- 에러핸들링
- 코어 자바스크립트
- CSS
- typescript
- LEVEL 2
- 면접을 위한 cs 전공지식 노트
- 알고리즘
- Err-Handling
- mongodb
성장에 목마른 코린이
MongoDB CRUD - Create 본문
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를 추가해 주면 됩니다.
'CodeStates > Section 3 (백엔드)' 카테고리의 다른 글
MongoDB CRUD - UPDATE (0) | 2022.04.17 |
---|---|
MongoDB CRUD - READ (0) | 2022.04.17 |
Atlas Cluster 생성하기 (0) | 2022.04.17 |
데이터베이스 설계 (관계형 데이터베이스) (0) | 2022.04.07 |
ACID (Atomicity, Consistency, Isolation, Durability) (0) | 2022.04.07 |