2013년 3월 28일 목요일

MongoDB 제한자

제한자?
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”는 제잘에서 문서를 수정한다, 즉 문서의 크기를 변경할 필요가 없어 매우 효율적이다. 반대로 배열 제한자는 문서의 크기를 변경할 수도 있기 때문에 느릴 수도 있다.

댓글 없음:

댓글 쓰기

블록체인 개요 및 오픈소스 동향

블록체인(block chain) 블록체인은 공공 거래장부이며 가상 화폐로 거래할때 발생할때 발생할 수 있는 해킹을 막는 기술. 분산 데이터베이스의 한 형태로, 지속적으로 성장하는 데이터 기록 리스트로서 분산 노드의 운영자에 의한 임의 조작이 불가...