반갑습니다!
이번 포스트에서는 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와 관련된 유용한 문법들에 대해 알아보겠습니다 ^^