
2021년 9월 3일에 작성된 문서 3번 입니다.
MongoDB 배운 내용을 정리했습니다.
_id 필드의 값: 각 도큐먼트 구별. _id 값에 ObjectId 타입(12byte, 24char)의 값으로 사용. _id 필드와 값을 특정하지 않았다면, 자동적으로 _id 필드가 생성되고 값에 ObjectId 타입이 할당. Insert 명령어mongo shell을 사용하여 컬렉션에 새로운 도큐먼트를 추가해보도록 하겠습니다.

화면과 같이 작성된 도큐먼트를 보면, ObjectId 타입(12byte, 24char)의 값이 _id로 작성되어 있는 것을 확인 할 수 있습니다.

1. insert로 도큐먼트를 삽입 하기 위해서 insert( )의 괄호 안에 삽입하고자 하는 도큐먼트를 작성
2. 이 명령어에 따른 결과물이 하단에 WriteResult로 출력
nInserted 항목 : 삽입된 도큐먼트 수
- 이 부분이 0 = 삽입된 도큐먼트가 없다=도큐먼트 추가 실패
writeError=>duplicate key에러로 추가가 되지 않았음
duplicate key에러 : 이미 같은 _id값을 가지는 도큐먼트가 컬렉션 내부에 존재해 중복된 데이터는 삽입 할 수 없다.

_id 값을 볼 수 있다. _id 값을 삭제한 후 삽입 작업을 실행. WriteResult({“nInserted” : 1}) (zips 컬렉션에 작성한 1개의 도큐먼트가 삽입되었다)같은 필드와 값으로 find(데이터를 조회하는 명령어)로 검색을 해보겠습니다.

_id 필드값을 추가하지 않았어도 도큐먼트 삽입 될 때, 자동적으로 해당 값이 추가.ObjectId를 생성하여 할당._id 값_id 값에 따라 도큐먼트가 구별
test 필드 1개가 있고, _id 값은 주어지지 않았다.writeErrors 빈배열 = 에러는 발생 안함.nInserted 필드에 3이라는 숫자 = 3개의 도큐먼트가 모두 다 추가. 이번에는 추가하려는 도큐먼트에 모두 _id 값을 지정해주었습니다.

_id 값을 주었고, duplicate key 에러발생. nInserted 항목 : 1개의 도큐먼트가 삽입 어떤 도큐먼트가 에러 없이 삽입 되었을까요?
하늘색 블록을 확인 하니, 첫번째 도큐먼트인{“test” : “1” }이 삽입된 것으로 보입니다. 그렇다면 왜 그 중 1개만 삽입이 되었을까요?

{“test” : “2”} 따라서 1번 인덱스에 해당하는 도큐먼트
{“test” : “2”}에서duplicate key에러가 발생해 2번 인덱스{“test” : “3”}은 실행이 되지 않았기 때문에 에러 메세지에는 1번 인덱스에 대한 에러메세지만 확인 가능합니다. 그러나 이러한 작업의 순서는 바꿀 수 있습니다.
insert 2번째 인자에 순서 옵션인 ordered를 추가. 이번에도 이전과 똑같이
[{“_id" : "1", "test": "1"}, {"_id" : "1", "test": "2"}, {"_id" : "3", "test": “3"}]도큐먼트를 삽입하는 쿼리문을 작성하였습니다. 그러자 마찬가지로 duplicate key 에러가 발생하게 되고, nInserted 항목으로 미뤄보아 1개의 도큐먼트가 추가 된 것을 알 수 있습니다.

insert 로 inspections 컬렉션에 추가된 도큐먼트는 마지막인 인덱스가 2번인 도큐먼트

MongoDB는 사용자가 쉽게 새로운 컬렉션이나 데이터베이스를 생성하기를 원했습니다. 만약 사용자가 존재하지 않는 컬렉션에 도큐먼트를 넣는 경우, 그와 동시에 컬렉션이 만들어지게 됩니다. 실제로 컬렉션이 생성되었는지 확인해보니, 주황색 블록처럼 inspection이 생성된 것을 확인할 수 있습니다.
Written with StackEdit.