본문 바로가기
SQL

14) mongoDB Tutorial - 데이터 수정하기(Updating Documents)

by Downy_J 2023. 10. 6.
728x90
반응형
SMALL

Create 해봤고

Read 해봤고

Delete 해봤고

이제 U만 할줄 알면 솔직히 다 끝났다

 

이것도 하나만 업뎃하거나 뭉탱이로 업뎃하거나 두가지다

(ㄷㄷ 왜 뭉탱이로 업뎃 할일 뭐가 있음..?)

이거 한번 수정해 보자

특정 데이터만 갖고 오려면 어떻게 하라고?

요거만 있음 되다고오~

그럼 고쳐 보자

이런 결과값이 반영 되는데
modifiedCount(수정된)가 1 이라는건
수정된 문서는 하나란 말이다

rating 점수 8점이고
pages 쪽수느 360으로 수정이 됬

이게 하나만 업데이트(수정)을 한 경우다

 

여기서 중요한건 저 두번째 인수로 들어간 {$set: { 바꿀필드: 값, 다른바꿀필드: 값 } }

 


여러개를 수정하려면..?

두개가 바꼈다

 

그니깐 이게 바뀌는 원리를 알아야 됨

저걸 읽어 보자면

db안에 books컬렉션에서 많이수정할건데 {저자가: "Terry Pratchett"}인걸 {$set: {저자가: "Terry Pratchet"}로 바

란 말이다

 

저기 문서 하나와 여러개를 바꾸는 두가지를 해봤음


연산자를 이용해 뭐 n카운트씩이든 올리는 그런게 있다

필요한건 역시 고유값인 _id다

뭐가 또 하나 바꼈다 하네?
보자고


page가 362가 된걸 알수 있다

저거 할때마다 n씩 늘어나는거다
(오오 이거 좋아요 할수 있겠네..?)

그럼 숫자카운트 낮출수도 있겠네?

$inc 반대 바로 해보자

바뀜...
뭐가?
이게!

아아 그렇구만

$inc 이걸로 특정 필드의 값을 늘리거나 줄일수 있다


이번엔 들어가있는 요소를 좀 꺼내와보자

타깃은 계속 같은 id놈꺼로. .

잘 바꼇고
잘 빠진것도 확인. .

여기서 사용한건 {$pull: } 이거다

 

들어있는 데이터 잡아 뺄때 쓴다


다시 집어 넣었다

넣을땐 {$push: } 를 쓰면 된다


다음으론 항목을 배열로 만들어 전체를 밀어 넣거나 하는게 있다

{$each: ["넣을값", "넣을값"]} 하게 되면
왼쪽과 같이 값이 들어가진

정리

특정 타깃 하나만 고치려면? 고유값인 id가 필요하고

updateOne()을 쓰라

특정 사용자의 글 여러개를 고친다면? 이름이 타깃이되면되고

updateMany()를 쓰라

 

db.books.updateOne({고유값 id와 유저명 같은건 첫번째 인자고}, { 두번째 인자는 $set 써서 {필드명: 고칠값}}) 써야 함

 

뭐 숫자 올리는건 { ... }, {두번째 인자에 $inc 를 쓰면 되는데 n이면 n만큼, -n이면 -n만큼} 오르고 내리고 한다

 

배열 안에 든 값 빼버리는건 { ... }, {두번째 인자에 $pull: {필드명: 값} }을 해주면 되고

배열 안에  값 넣어버리는건 { ... }, {두번째 인자에 $push: {필드명: 값} }을 해주면 된다

 

여러개를 넣을때는 또 달라지는데

{ ... }, {두번째 인자에 $push: { 필드명: { $each: [ "값1", "값2"] } } } 해주면 된다

728x90