본문 바로가기
SEMINAR/몽고DB

MONGODB - update()

by 스꼬맹이브로 2020. 5. 7.
728x90
반응형
SMALL

· update()

  • 앞서 insert, find, remove를 통해 데이터를 추가, 확인, 삭제를 할 수 있었다면, 
    Document의 field를 수정하는 기능도 필요
  • field를 수정하는 메소드가 update()

update() 메소드의 구조
구조 상세 설명

이번에도 이론보다는 실습으로 해보자.

이번 실습을 도와줄 데이터. 

 

1.  field 정보 업데이트와 document 대체

· name field가 eungi(은지)인 document의 height field값을 168로 수정하고 싶다.

→ 특정 field 값을 수정할 때는 '$set' 연산자를 사용한다. 
→ '$set'연산자를 사용하지 않을 시에는 document 자체가 대체된다.

set 연산자 사용
set 연산자 미사용

2.  특정 field 제거

· name field가 dongho인 document의 grade field를 제거하고 싶다.

→ 제거는 추가, 갱신 명령어 '$set'과 반대로 '$unset'을 사용한다.

unset 연산자 사용

3.  query에 해당되지않는 document 추가

· name field에 eunhye인 document가 없다. 

→ '$set'으로 값 추가 역할을 해주면서 'upsert'을 통해 document를 추가한다.

   (upsert: querydocument가 없을 경우 새 documnet를 추가해주는 parameter)

set과 upsert로 document 추가

4.  여러 document의 특정 field 수정

· 신장 170이하 field를 갖는 documnetheight값을 전부 170이하로 갱신하고 싶다.

→ '$lte'연산자를 통해 query에 부합하는 document를 찾고, '$set'을 통해 해당 update해준다.

multi parametertrue로 해줌으로써, 해당하는 documnent의 특정 field들 수정한다.

·name field가 dongho인 document에 skills : python을 갖는 배열을 추가하고 싶다.

update parameter자리에 'push'를 이용한다.

→ 또한 여러 개의 값을 추가하면서 정렬까지 한번에 가능하다. (sort 기능 사용)

 

5.  document내 배열 값 제거

·name field가 dongho인 document에 skills배열에 java와 c를 제거하고 싶다.

→ 특정 배열 값 제거는 pull을 시작으로 '$in'안에 제거하고자 하는 값을 추가함으로써 제거가 가능하다.

 

몽고DB세미나 끝! 이제 지옥이 시작되겠지....

728x90
반응형
LIST