본문 바로가기
MongoDB/MongoDB 기본 CRUD

[MongoDB 기본 CRUD] 12. updateMany() 사용하여 데이터 갱신(수정)하기

by Fletcher 2024. 8. 14.

 

반갑습니다!

이번 포스트에서는 update() 함수를 사용하여 도큐먼트의 데이터를 수정해보겠습니다 ^^

update()에는 updateOne()updateMany() 두 가지가 있는데요

 

updateOne() 같은 경우에는 데이터 수정을 위해서 특정 조건을 입력할 시

조회되는 조건이 여러개일 경우 해당 데이터 중 첫 번째 것 하나에만

데이터 수정이 적용됩니다 ^^

 

updateMany()의 경우는 이름에서도 알 수 있듯이, updateOne()과는 달리

여러 도큐먼트의 데이터를 동시에 수정할 수 있습니다 ^^

 

 

 

 

데이터 수정 작업에 대한 샘플 코드를 보면서 이해해보겠습니다 ^^

 

이전 포스트들을 진행하면서 users 컬렉션에 기존의 데이터가 존재해있습니다

이 데이터들에 대해서 age 필드의 값이 25를 초과하는 조건을 만족하는

도큐먼트들의 필드 중 address 필드의 값을 

모두 "서울"로 바꾸겠습니다 ^^

 

updateMany() 함수를 사용하여 해당 조건을 만족하는 모든 도큐먼트들에 대해 

해당 수정 명령을 입력했습니다

 

콘솔 창을 보니 matchedCount 값을 보니 해당 조건을 만족하는 도큐먼트가 2개 있었고,

modifiedCount 값 또한 2인 것을 보니 해당 도큐먼트들에 대해

수정 사항이 잘 반영된 것을 확인할 수 있겠습니다 ^^

 

 

 

기존의 데이터들 중 방금 전 샘플 코드의 조건에 해당된 도큐먼트들은

address 필드의 값이 모두 "서울"로 변경되었습니다

 

그럼 다시 address 필드의 value가 "서울"인 도큐먼트를 대상으로

이번에는 age 필드의 값을 3씩 증가시켜보겠습니다 ^^

 

$inc는 increase의 축약 표현입니다 ^^! 

 

 

 

find() 함수에 아무런 파라미터를 넣어주지 않음으로 전체 데이터를 조회해보겠습니다

확인해보면 애초에 address 값이 존재하지 않았던 민수 도큐먼트를 제외하고

나머지 두 도큐먼트는 address가 "서울"로 변경이 되어있고,

age 값은 3씩 증가해있는 것을 확인할 수 있겠습니다 ^^

 

두 예시 샘플의 수정 사항이 잘 반영되었습니다 ^^!

 

 

 

 

 

 

연습문제를 하나 풀어보겠습니다 ^^

 

age가 40보다 큰 도큐먼트의 address를 "수원시"로 변경하기

 

샘플 데이터를 조금 추가해줬습니다

이전에 살펴봤던 insertMany() 복습 겸 한 번 더 사용해봤는데요 ^^

 

데이터가 준비 되었으니 해당 연습문제를 풀기 위해서 명령어를 작성해볼까요?

 

 

 

일단 데이터를 수정해줘야 하는데,

조건 지정시 해당 조건을 만족하는 데이터가 2개 이상일 수 있으니

우선 updateMany()를 사용해주겠습니다 ^^

 

age 필드의 값이 40보다 큰 도큐먼트가 대상이 되므로,

이미지와 같이 조건을 지정해줬습니다

 

그리고 해당 조건을 만족하는 도큐먼트들의 address 필드의 값을 바꾸는 것이므로

$set 키워드의 대상이 되는건 address 컬럼이 되겠습니다 ^^

 

matchedCount 값이 3인 것을 보아 조건에 해당되는 도큐먼트의 수가 3개,

modifiedCount 역시 3인 것을 보니 해당 조건을 만족하는 도큐먼트들의

데이터가 모두 잘 수정된 것을 알 수 있겠습니다 ^^

 

 

전체 데이터를 조회해서 확인해볼까요?

 

Kate의 address 값은 원래 "수원시"였고,

age 값이 40보다 큰 도큐먼트는 David, Fletcher, Andy 세 도큐먼트입니다

해당 도큐먼트들의 데이터 중 address 필드의 값이

모두 "수원시"가 되어있는 것을 볼 수 있겠습니다 ^^

 

 

 

find() 함수에 대해 살펴볼 때 비교, 논리연산 등

여러 유용한 문법들을 추가로 살펴보면서 검색 조건을 심화시켰었는데요 ^^

 

데이터 수정 관련해서도 여러 유용한 문법들이 있습니다

다음 포스트부터는 update와 관련된 유용한 문법들에 대해 알아보겠습니다 ^^