DataBase/MongoDB

[MongoDB] 특정 값 증가 - Update 메소드와 $inc 제한자 ( 조회 수, 좋아요)

민돌v 2021. 10. 9. 23:18

몽고디비에서 Update 메소드를 사용할 때 값을 수정하기위해 $set을 이용하는데, 이 set이 제한자이다.

제한자의 종류는 다양하고 기능 또한 다양합니다.

 

제한자의 구체적인 용어는 '갱신 제한자'로, MongoDB에서 문서의 부분 갱신을 할때 매우 효율적으로 수행할 수 있도록 하는 개념이라고 합니다.

 

'갱신 제한자의 종류'

$set document에서 특정 키의 값을 수정합니다. 특정 키가 존재하지 않다면 새롭게 생성합니다.
특정 키의 데이터형도 수정할 수 있습니다.
$unset document에서 특정 키와 값을 모두 제거합니다.
$nc 배열에 사용되는 제한자로써, 지정된 키가 존재하는지 확인할 수 있습니다.
$inc 이미 존재하는 키의 값을 수정하거나, 새로운 키를 생성합니다. $set과 비슷하지만 주로 값이 자주 변경되는 값을 수정하는데 사용됩니다.
int, long, double 의 자료형에만 사용이 가능합니다.
$push 배열에 사용되는 제한자로써, 지정된 키가 존재할 때 해당 키(배열)의 끝에 요소를 추가하며 지정된 키가 존재 하지 않으면 새로운 배열을 추가합니다.
$pull 배열에 사용되는 제한자로써, 지정된 키에 대한 요소를 삭제합니다.
$addToSet 배열에 사용되는 제한자로써, 중복을 피해서 요소를 배열에 추가할 때 사용합니다. 즉, $nc와 $push를 함께 수행하는 기능과 같습니다.
$each $addToSet과 함께 사용되는 제한자로써, 여러 개의 값을 중복되지 않게 배열에 추가합니다.
$pop 배열을 스택이나 큐처럼 활용할 수 있습니다.





 

1.$set 제한자 

  • 값의 수정
  • 값의 추가는 불가

몽고디비 특정 값 수정하기

 db.user.update({"id" : "mcjang"}, {"$set" : {"latestSeenMovie" : "추격자"}})

2. $inc 제한자

  • 값 증가 : $inc
  • 사용 용도: 게시글 조회수 증가, 사용자 Point 증감, 시퀀스 등등

 

몽고디비 특정 값 증가시키기

// $inc 제한자를 이용해 값 1 증가시키기
db.seq.update({"name" : "post"}, {"$inc" : {"val" : 1}}) 


db.article.update_one({'idx': int(idx)}, {'$inc': {'read_count': 1}})

3. $unset 제한자

  • document의 특정 키와 값을 모두 제거
  • 필드를 삭제한다.

 

몽고디비 특정 키에 상응하는 필드 지우기

#“최근에본 영화” 삭제
db.user.update({"id" : "mcjang"}, {"$unset" : {"latestSeenMovie" : 1}}

4. $push 제한자

  • $set 제한자와 같은 역할. 단, Field 가 존재할 경우 요소를 배열 끝에 추가한다.

 

몽고디비 특정 값 안에 값 추가하기[배열로]

# 영화 등록
 db.user.update({"id" : "mcjang"}, {"$push" : {"latestSeenMovie" : "베테랑"}})

 


5. $pull 제한자

  • 요소를 제거함

 

몽고디비 특정 값 제거하기

#“최근에본 영화” 중 베테랑 제거

db.user.update({"id" : "mcjang"}, {"$pull" : {"latestSeenMovie" : "베테랑"}})

 


 

 

 

 

 

참고

몽고디비 제한자 : https://loveiskey.tistory.com/135