Updates
Nesta página
As Atualizações do fornece métodos de fábrica estáticos para os operadores de atualização do MongoDB . Cada método retorna uma instância do tipo Bson
, que, por sua vez, pode ser passada para qualquer método que espere uma atualização.
Você pode importar os métodos da classe Updates
estaticamente, como mostrado no seguinte código:
import org.mongodb.scala.model.Updates._
Os exemplos deste guia pressupõem essa importação estática.
Atualizações de campo
Esta seção descreve os operadores de atualização que se aplicam ao valor de um campo inteiro.
definir
O operador de atualização $set
define o valor de um campo para o valor especificado.
O seguinte exemplo define o valor do campo quantity
para 11
:
set("quantity", 11)
Desconfigurar
O operador de atualização $unset
exclui o campo com o nome fornecido.
O exemplo seguinte exclui o campo quantity
:
unset("quantity")
Definir na inserção
O operador de atualização $setOnInsert
define o valor de um campo para o valor fornecido, mas somente se a atualização for um upsert que resulte em uma inserção de um documento.
O exemplo a seguir define o valor do campo defaultQuantity
como 10
se um upsert resultou na inserção de um documento:
setOnInsert("defaultQuantity", 10)
Incremento
O operador de atualização $inc
incrementa o valor de um campo numérico em um valor especificado.
O exemplo seguinte incrementa o valor do campo quantity
por 5
:
inc("quantity", 5)
Multiplicar
O operador de atualização $mul
multiplica o valor de um campo numérico por um valor especificado.
O seguinte exemplo multiplica o valor do campo price
por 1.2
:
mul("price", 1.2)
renomear
O operador de atualização $rename
renomeia um campo.
O exemplo a seguir renomeia o campo qty
para quantity
:
rename("qty", "quantity")
Min
O operador de atualização $min
atualiza o valor do campo para um valor especificado se o valor especificado for menor que o valor atual do campo.
O exemplo a seguir define o valor do campo lowScore
para o mínimo de seu valor atual e 150
:
min("lowScore", 150)
Máx
O operador de atualização $max
atualiza o valor do campo para um valor especificado se o valor especificado for maior que o valor atual do campo.
O exemplo a seguir define o valor do campo highScore
para o máximo de seu valor atual e 900
:
max("highScore", 900)
Data atual
O operador de atualização $currentDate
define o valor do campo com o nome especificado para a data atual, seja como uma data BSON ou como um carimbo de data/hora BSON.
O exemplo a seguir define o valor do campo lastModified
para a data atual como um tipo de data BSON:
currentDate("lastModified")
O exemplo a seguir define o valor do campo lastModified
para a data atual como um tipo de carimbo de data/hora BSON:
currentTimestamp("lastModified")
Bit
O operador de atualização $bit
executa uma atualização bitwise do valor integral de um campo.
O exemplo a seguir executa um AND
bitwise entre o número 10
e o valor integral do campo de máscara:
bitwiseAnd("mask", 10)
O exemplo a seguir executa um OR
bitwise entre o número 10
e o valor integral do campo de máscara:
bitwiseOr("mask", 10)
O exemplo a seguir executa um XOR
bitwise entre o número 10
e o valor integral do campo de máscara:
bitwiseXor("mask", 10)
Array Updates
Esta seção descreve os operadores de atualização que se aplicam ao conteúdo do valor da array de um campo.
Adicionar ao conjunto
O operador de atualização $addToSet
adiciona um valor a uma array, a menos que o valor já esteja presente, caso em que o operador não faz nada com essa array.
O exemplo seguinte adiciona o valor "a"
ao valor da array do campo letters
:
addToSet("letters", "a")
O exemplo a seguir adiciona cada um dos valores "a"
, "b"
e "c"
ao valor da array do campo letters
:
addEachToSet("letters", Arrays.asList("a", "b", "c"))
Pop
O operador de atualização $pop
remove o primeiro ou último elemento de uma array.
O exemplo a seguir remove o primeiro elemento do valor da array do campo scores
:
popFirst("scores")
O exemplo a seguir remove o último elemento do valor da array do campo scores
:
popLast("scores")
Puxe tudo
O operador de atualização $pullAll
remove todas as instâncias dos valores especificados de uma array existente.
O exemplo a seguir remove as pontuações 0
e 5
da array scores
:
pullAll("scores", Arrays.asList(0, 5))
Puxe
O operador de atualização $pull
remove de uma array existente todas as instâncias de um valor ou valores que correspondem a uma query especificada.
O exemplo a seguir remove o valor 0
da array scores
:
pull("scores", 0)
O exemplo a seguir remove todos os elementos da array votes
que são maiores ou iguais a 6
:
pullByFilter(Filters.gte("votes", 6))
Empurrar
O operador de atualização $push
acrescenta um valor especificado a uma array.
O exemplo a seguir empurra o valor 89
para a array scores
:
push("scores", 89)
O exemplo a seguir empurra os valores 89
, 90
e 92
para a array scores
:
pushEach("scores", 89, 90, 92)
O exemplo a seguir empurra os valores 89
, 90
e 92
para o início da array scores
:
pushEach("scores", new PushOptions().position(0), 89, 90, 92)
O exemplo a seguir empurra os valores 89
, 90
e 92
para a array scores
, classifica a array em ordem decrescente e remove todos, exceto os primeiros elementos 5
da array:
pushEach("scores", new PushOptions().sort(-1).slice(5), 89, 90, 92)
O exemplo a seguir empurra os documentos { wk: 5, score: 8 }
, { wk: 6,
score: 7 }
e { wk: 7, score: 6 }
para a array de questionários, classifica a array em ordem decrescente por pontuação e remove todos, exceto os últimos 3
elementos da array:
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))
Combinando vários operadores de atualização
Muitas vezes, um aplicação deve atualizar atomicamente vários campos de um único documento combinando dois ou mais operadores de atualização descritos nas seções anteriores.
O exemplo a seguir define o valor do campo quantity
como 11
, o valor do campo total
como 30.40
e empurra os valores 4.99
, 5.99
e 10.99
para o valor da array do campo prices
:
combine(set("quantity", 11), set("total", 30.40), pushEach("prices", 4.99, 5.99, 10.99))