Akashic Records

MongoDB 제한자 본문

오래된글/DataBase

MongoDB 제한자

Andrew's Akashic Records 2018. 4. 17. 15:25
728x90

제한자?

MongoDB에서 문서의 부분 갱신은 원자적 갱신 제한자(update modifier)를 사용해 매우 효율적으로 수행할 수 있다. 갱신 제한자는 키를 변경, 추가 또는 제거하고 배열과 내장 문서를 조작하는 복잡한 갱신 연산을 지정하는 데 사용되는 특수 키이다.


“$set”

  • 키의 값을 설정한다. 키가 존재하지 않으면 생성, 스키마를 갱신하거나 사용자 정의 키를 추가할 때 사용.

  • 심지어 키의 데이터형도 변경할 수 있다.

  • 내장 문서 내부의 데이터를 변경할 때 쓸 수 있다. {"$set” : {“author.name” : “joe schmoe”}}


“$unset”

  • 키와 값을 모두 제거할 수 있다.


“$inc”

  • 이미 존재하는 키의 값을 변경하거나 새롭게 키를 생성하는데 사용

  • 투표와 같이 자주 변하는 수치 값을 갱신하는 데 유용

  • "$set”과 비슷하지만 숫자를 증감을 목적으로 사용.

  • 정수, long, double 형의 값에만 사용, 다른 데이터형에 사용할 수 없다.


“$push”

  • 배열 제한자

  • 지정된 키가 이미 존재하면 배열의 끝에 요소를 추가하고, 그렇지 않으면 새로운 배열을 생성해 추가한다.


“$nc”

  • 배열 제한자

  • 지정된 키가 존재하는지 확인


“$addToSet”

  • 배열 제한자

  • "$nc”+”$push”와 같은 기능을 한다, 즉 중복을 피해서 배열에 추가할 때 사용.


"$each”

  • "$addToSet”과 함께 사용하여 여러 개의 값을 중복을 피해서 배열에 추가할 수 있게 된다.


“$pop”

  • 배열을 스택이나 큐로 사용.

  • {$pop : {key : 1}} → 배열의 끝부터 요소를 제거

  • {$pop : {key : -1}} → 배열의 처음부터 제거


“$pull”

  • 배열에서 하나의 문서만 지우는 것이 아니고 일치하는 모든 문서를 제거한다.


제한자의 속도

"$inc”는 제잘에서 문서를 수정한다, 즉 문서의 크기를 변경할 필요가 없어 매우 효율적이다. 반대로 배열 제한자는 문서의 크기를 변경할 수도 있기 때문에 느릴 수도 있다.



728x90

'오래된글 > DataBase' 카테고리의 다른 글

MongoDB, mogo Shell  (0) 2018.04.17
MongoDB, 설치와 간단 사용법  (0) 2018.04.17
Index가 옵티마이저에 의해 수행되는 경우  (0) 2018.04.15
Hashing  (0) 2018.04.15
CUBRID 주요기능  (0) 2018.04.15
Comments