Docs Menu
Docs Home
/ / /
Scala
/

Updates

이 페이지의 내용

  • 필드 업데이트
  • 세트
  • Unset
  • 삽입 시 설정
  • 증가
  • 곱하기
  • rename
  • Min
  • 최대
  • 현재 날짜
  • 비트
  • Array Updates
  • 세트에 추가
  • 모두 가져오기
  • 당기기
  • 푸시
  • 여러 업데이트 연산자 결합

업데이트 클래스는 MongoDB 업데이트 연산자를 위한 정적 팩토리 메서드를 제공합니다. 각 메서드는 유형의 인스턴스 Bson 를 반환하며, 이 인스턴스는 업데이트 가 필요한 모든 메서드에 차례로 전달될 수 있습니다.

다음 코드와 같이 Updates 클래스의 메서드를 정적으로 가져올 수 있습니다.

import org.mongodb.scala.model.Updates._

이 가이드의 예제에서는 이러한 정적 가져오기를 가정합니다.

이 섹션에서는 전체 필드 값에 적용 되는 업데이트 연산자에 대해 설명합니다.

$set 업데이트 연산자는 필드 값을 지정된 값으로 설정합니다.

다음 예에서는 quantity 필드의 값을 11 로 설정합니다.

set("quantity", 11)

$unset 업데이트 연산자 는 지정된 이름의 필드 를 삭제합니다.

다음 예시에서는 quantity 필드를 삭제합니다.

unset("quantity")

$setOnInsert 업데이트 연산자 는 필드 값을 지정된 값으로 설정하지만, 업데이트 가 문서 삽입을 초래하는 업서트 경우에만 가능합니다.

다음 예시 에서는 업서트 인해 문서 가 삽입된 경우 defaultQuantity 필드 의 값을 10 로 설정합니다.

setOnInsert("defaultQuantity", 10)

$inc 업데이트 연산자는 숫자 필드의 값을 지정된 값만큼 증가시킵니다.

다음 예시 에서는 quantity 필드 의 값을 5 만큼 증가시킵니다.

inc("quantity", 5)

$mul 업데이트 연산자 는 숫자 필드 값에 지정된 값을 곱합니다.

다음 예시 에서는 price 필드 값에 1.2 을 곱합니다.

mul("price", 1.2)

$rename 업데이트 연산자는 필드 이름을 바꿉니다.

다음 예에서는 qty 필드의 이름을 quantity 로 바꿉니다.

rename("qty", "quantity")

$min 업데이트 연산자는 지정된 값이 필드의 현재 값보다 작은 경우 필드 값을 지정된 값으로 업데이트합니다.

다음 예시 에서는 lowScore 필드 의 값을 현재 값과 150 중 최소값으로 설정합니다.

min("lowScore", 150)

$max 업데이트 연산자 는 지정된 값이 필드 의 현재 값보다 큰 경우 필드 값을 지정된 값으로 업데이트합니다.

다음 예시 에서는 highScore 필드 의 값을 현재 값과 900 중 최대값으로 설정합니다.

max("highScore", 900)

$currentDate 업데이트 연산자 는 지정된 이름을 가진 필드 의 값을 BSON 날짜 또는 BSON 타임스탬프로 현재 날짜로 설정합니다.

다음 예시 에서는 BSON 날짜 유형인 lastModified 필드 의 값을 현재 날짜로 설정합니다.

currentDate("lastModified")

다음 예에서는 lastModified 필드 값을 BSON 타임스탬프 유형으로 현재 날짜로 설정합니다.

currentTimestamp("lastModified")

$bit 업데이트 연산자 는 필드 의 정수 값에 대한 비트 단위 업데이트 를 수행합니다.

다음 예시 에서는 숫자 10 와 마스크 필드 의 정수 값 사이에서 비트 단위 AND 을 수행합니다.

bitwiseAnd("mask", 10)

다음 예시 에서는 숫자 10 와 마스크 필드 의 정수 값 사이에서 비트 단위 OR 을 수행합니다.

bitwiseOr("mask", 10)

다음 예시 에서는 숫자 10 와 마스크 필드 의 정수 값 사이에서 비트 단위 XOR 을 수행합니다.

bitwiseXor("mask", 10)

이 섹션에서는 필드 배열 값의 내용에 적용 되는 업데이트 연산자에 대해 설명합니다.

$addToSet 업데이트 연산자는 값이 이미 존재하지 않는 한 배열에 값을 추가하며, 이 경우 연산자는 해당 배열에 아무 작업도 수행하지 않습니다.

다음 예에서는 letters 필드의 배열 값에 "a" 값을 추가합니다.

addToSet("letters", "a")

다음 예에서는 각 값 "a", "b""c"letters 필드의 배열 값에 추가합니다.

addEachToSet("letters", Arrays.asList("a", "b", "c"))

$pop 업데이트 연산자는 배열의 첫 번째 또는 마지막 요소를 제거합니다.

다음 예에서는 scores 필드 배열 값의 첫 번째 요소를 제거합니다.

popFirst("scores")

다음 예에서는 scores 필드 배열 값의 마지막 요소를 제거합니다.

popLast("scores")

$pullAll 업데이트 연산자 는 기존 배열 에서 지정된 값의 모든 인스턴스를 제거합니다.

다음 예에서는 scores 배열에서 05 점수를 제거합니다.

pullAll("scores", Arrays.asList(0, 5))

$pull 업데이트 연산자는 지정된 쿼리와 일치하는 값의 모든 인스턴스를 기존 배열에서 제거합니다.

다음 예에서는 scores 배열에서 0 값을 제거합니다.

pull("scores", 0)

다음 예시 에서는 votes 배열 에서 6 보다 크거나 같은 모든 요소를 제거합니다.

pullByFilter(Filters.gte("votes", 6))

$push 업데이트 연산자는 지정된 값을 배열에 추가합니다.

다음 예시 에서는 89 값을 scores 배열 로 푸시합니다.

push("scores", 89)

다음 예제에서는 89, 9092 값을 scores 배열로 푸시합니다.

pushEach("scores", 89, 90, 92)

다음 예제에서는 89, 9092 값을 scores 배열의 시작 부분으로 푸시합니다.

pushEach("scores", new PushOptions().position(0), 89, 90, 92)

다음 예제에서는 89, 9092 값을 scores 배열로 푸시하고, 배열을 내림차순으로 정렬하고, 배열의 처음 5 요소를 제외한 모든 요소를 제거합니다.

pushEach("scores", new PushOptions().sort(-1).slice(5), 89, 90, 92)

다음 예제에서는 { wk: 5, score: 8 }, { wk: 6, score: 7 }{ wk: 7, score: 6 } 문서를 퀴즈 배열로 푸시하고, 점수를 기준으로 내림차순으로 배열을 정렬하고, 배열의 마지막 3 요소를 제외한 모든 요소를 제거합니다.

pushEach("quizzes", new PushOptions().sortDocument(Sorts.descending("score")).slice(-3),
Document("week" -> 5, "score" -> 8),
Document("week" -> 6, "score" -> 7),
Document("week" -> 7, "score" -> 6))

애플리케이션 은 이전 섹션에서 설명한 두 개 이상의 업데이트 연산자를 결합하여 단일 문서 의 여러 필드를 원자적으로 업데이트 해야 하는 경우가 많습니다.

다음 예시에서는 quantity 필드의 값을 11 로, total 필드의 값을 30.40 로 설정하고, 4.99, 5.9910.99 값을 배열 값으로 푸시합니다. prices 필드의:

combine(set("quantity", 11),
set("total", 30.40),
pushEach("prices", 4.99, 5.99, 10.99))

돌아가기

집계