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
$rename更新演算子はフィールドの名前を変更します。
次の例では、 qtyフィールドの名前をquantityに変更します。
rename("qty", "quantity") 
Min
$min更新演算子は、指定された値がフィールドの現在の値より小さい場合、フィールドの値を指定された値に更新します。
次の例では、 lowScoreフィールドの値を、現在の値と150の最小値に設定します。
min("lowScore", 150) 
Max
$max更新演算子は、指定された値がフィールドの現在の値より大きい場合、フィールドの値を指定された値に更新します。
次の例では、 highScoreフィールドの値を、現在の値と900の最大値に設定します。
max("highScore", 900) 
現在の日付
$currentDate更新演算子は、指定された名前のフィールドの値を現在の日付(BSON 日付または BSON タイムスタンプ)に設定します。
次の例では、 lastModifiedフィールドの値を BSON date 型の現在の日付に設定します。
currentDate("lastModified") 
次の例では、 lastModifiedフィールドの値を BSON タイムスタンプ 型の現在の日付に設定します。
currentTimestamp("lastModified") 
ビット
$bit更新演算子は、フィールドの整数値のビット単位の更新を実行します。
次の例では、数値10とマスク フィールドの整数値の間でビット単位のANDを実行します。
bitwiseAnd("mask", 10) 
次の例では、数値10とマスク フィールドの整数値の間でビット単位のORを実行します。
bitwiseOr("mask", 10) 
次の例では、数値10とマスク フィールドの整数値の間でビット単位のXORを実行します。
bitwiseXor("mask", 10) 
Array Updates
このセクションでは、フィールドの配列値の内容に適用される更新演算子について説明します。
セットに追加
$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配列からスコア0と5を削除します。
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 、 90 、 92の値をscores配列にプッシュします。
pushEach("scores", 89, 90, 92) 
次の例では、 89 、 90 、 92の値をscores配列の先頭にプッシュします。
pushEach("scores", new PushOptions().position(0), 89, 90, 92) 
次の例では、 89 、 90 、 92の値を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)) 
複数の更新演算子の組み合わせ
多くの場合、アプリケーションは、前のセクションで説明された更新演算子を 2 つ以上組み合わせて、1 つのドキュメントの複数のフィールドをアトミックに更新する必要があります。
次の例では、 quantityフィールドの値を11に、 totalフィールドの値を30.40に設定し、 4.99 、 5.99 、 10.99の値を配列値にプッシュしますpricesフィールドの:
combine(set("quantity", 11),      set("total", 30.40),      pushEach("prices", 4.99, 5.99, 10.99))