Notice
Recent Posts
Recent Comments
Link
250x250
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- grpc
- Docker
- jenkins github
- spring
- vue.js
- gradle
- JavaScript
- error
- REACT
- Linux
- jenkins github 연동
- Spring Boot
- MongoDB
- jenkins jdk
- jenkins maven
- CI/CD
- docker network
- 리눅스
- grafana
- subnetmask
- 리액트
- jenkins install
- java
- MySQL
- jenkins 설치
- nginx
- IntelliJ
- Jenkins Pipeline
- Jenkins
- jpa
Archives
- Today
- Total
뭐든 즐기면서 ;)
MongoDB 갱신 / MongoDB 수정 / MongoDB update 본문
728x90
- deleteOne / deleteMany
- document 삭제
- updateOne / updateMany
- field value 수정
- field 추가 가능(안 될 줄,,)
- 갱신 연산자
- $inc : 수 증가
- int, long, double, decimal 값에만 사용 가능. null, boolean, string에는 사용 불가.
- $set : value 수정 및 field와 value 추가, 그리고 value 형식 변경 (ex: string > [array] )
- $unset : field 삭제 (값은 뭘로 줘도 되는 듯,, -1, 1로 해봤는데 둘 다 된다.)
- 배열관련 (이 색으로 지정한 것은 아래에 예제를 따로 작성해 두었습니다.)
- $push : 배열에 값 추가
- $each : 한 번에 여러개 추가할 때 사용
- $slice : 배열에 저장할 길이 지정 (-일 경우 맨 처음, +일 경우 마지막 배열 값이 잘린다. 해서 정렬($sort)을 어떻게 하느냐에 따라 이 옵션 값도 잘 적용시켜야 한다.)
- $sort : 배열 값 정렬 (-일 경우 내림차순, +일 경우 오름차순)
- $ne & $addToSet
- $pop : 배열에 값 제거
- +일 경우 마지막부터 요소 제거
- -일 경우 처음부터 요소 제서
- $pull : 배열에서의 특정 값 제거
- db.collection.updateOne( {}, {$pull: {todo : 'study'}} ) // study 값이 제거된다.
- 배열 내 위치 기반 변경
- $inc
- $set
- $ : 위치 연산자 (조건부 index가 필요할 때 사용)
- arrayFilters
- $push : 배열에 값 추가
- $inc : 수 증가
$slice / $sort 예제
// 예제 데이터
> db.drama.findOne({..});
> {name: '더 글로리',
actors: ['송혜교', '임지연', '손명오']
.
.
.
}
// slice 사용 예제
> db.drama.updateOne(
{name: '더 글로리'}
,{$push:
{actors:
{$each: ['이도현', '최혜정']
,$slice: 4
,$sort: 1
// 배열이 object일 경우 $sort 사용방법
// $sort : {key: 1 또는 -1}
}
}
})
// 위 과정을 거치고 난 후 데이터
{
name: '더 글로리'
,actors: ['손명오', '송혜교', '이도현', '임지연'] // $slice 4개까지만 넣을 수 있기에 최혜정은 잘림.
// 만약 $slice가 -4였다면 값은 아래와 같이 나올 것이다.
// ['송혜교', '이도현', '임지연', '최혜정']
}
// push > sort > slice 과정을 거치는 듯 보임.
배열 내 위치 기반 변경 ( $inc / $set / $ )
> db.blog.posts.findOne()
{
_id: Obj.....
,"content" : "sdf..."
,"comments":[
{
"comment" : "..."
,"author" : "John",
,"votes" : 0
}
,{
"comment" : "i thought it was too short"
,"author" : "CLaire"
,"votes" : 3
}
,{
"comment" : "free watches"
,"author" : "Alice"
,"votes" : -5
}
}
// 아래는 특정 index에 field값 변경 방법
> db.blog.updateOne( {post: post_id}, {$inc: {'comments.1.votes' : 1}} )
// 아래는 특정 field의 특정 vaule를 가진 index에 특정 field value를 변경
> db.blog.updateOne( {'comments.author': 'John'}, {$set: {'coments.$.author': 'Jim'}} )
- replaceOne
- field value 수정
- field 삭제
- field 추가
- 모든 게 다 가능. 한 마디로, replace는 document의 형식 자체를 바꿔버릴 때 쓸 것 같다.
728x90
'DB(데이타베이스) > MongoDB' 카테고리의 다른 글
MongoDB arrayFilters (0) | 2023.05.04 |
---|---|
MongoDB array push $ne / $addToSet (2) | 2023.04.30 |
MongoDB insertMany (1) | 2023.04.29 |
mongodb error : "codeName":"SocketException","errmsg":"Permission denied" (0) | 2023.03.28 |
MongoDB RDB와의 간단 구문 비교 (0) | 2023.02.28 |
Comments