몽고디비에서 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
'DataBase > MongoDB' 카테고리의 다른 글
[Flask] pymongo objectid 로 게시글 찾기 (0) | 2021.10.19 |
---|---|
[MongoDB] Pymongo Array 특정 요소(인덱스) 삭제하기 - $pull array (2) | 2021.10.18 |
MongoDB 설치하기 (0) | 2021.10.13 |
MongoDB - Update 하는 방법 (update_one) (0) | 2021.10.09 |
MongoDB란, - (MongDB 시작하기, Robo3T로 조작하기, 몽고디비 조작 CRUD) (0) | 2021.09.18 |