Menu Docs
Página inicial do Docs
/ / /
Driver de sincronização Java
/ /

Atualizações de construtores

Nesta página

  • Visão geral
  • Atualizações de campo
  • definir
  • Desconfigurar
  • Definir na inserção
  • Incremento
  • Multiplicar
  • renomear
  • Min
  • Máx
  • Data atual
  • Carimbo de data/hora atual
  • Bit
  • Array Updates
  • Adicionar ao conjunto
  • Pop
  • Puxe tudo
  • Puxe
  • Empurrar
  • Combinando vários operadores de atualização

Neste guia, você pode aprender como especificar atualizações utilizandoconstrutores do no driver Java .

O construtor do Updates fornece métodos de ajuda para simplificar as seguintes tarefas:

  • Atualizações de campo: Atualizando ou removendo o valor de um campo específico

  • Atualizações de array: Atualizando valores em um campo com valor de array

  • Combinando vários operadores de atualização: Executando várias atualizações de uma só vez, como definir ou alterar mais de um campo

Alguns métodos que esperam documentos de atualização são:

  • updateOne()

  • updateMany()

  • bulkWrite()

A classe Updates fornece métodos de fábrica estáticos para todos os operadores de atualização do MongoDB. Cada método retorna uma instância do tipo BSON, que você pode passar para qualquer método que espera um argumento de atualização.

Dica

Por questões de brevidade, você pode optar por importar os métodos da classe Atualizações estaticamente:

import static com.mongodb.client.model.Updates.*;

Os exemplos a seguir pressupõem essa importação estática.

Os exemplos deste guia usam o seguinte documento:

{
"_id": 1,
"color": "red",
"qty": 5,
"vendor": [ "A", "D", "M" ],
"lastModified": { "$date": "2021-03-05T05:00:00Z" }
}

Use o método set() para atribuir o valor de um campo em uma operação de atualização.

O seguinte exemplo define o valor do campo qty para "11":

Bson filter = eq("_id", 1);
Bson update = set("qty", 11);
collection.updateOne(filter, update);

O exemplo anterior atualiza o documento original para o seguinte estado:

{
"_id": 1,
"color": "red",
"qty": 11,
"vendor": [ "A", "D", "M" ],
"lastModified": { "$date": "2021-03-05T05:00:00Z" }
}

O exemplo a seguir adiciona dois novos campos ao documento original:

Bson filter = eq("_id", 1);
Bson update = combine(set("width", 6.5), set("height", 10));
collection.updateOne(filter, update);

O exemplo anterior atualiza o documento original para o seguinte estado:

{
"_id": 1,
"color": "red",
"qty": 5,
"vendor": [ "A", "D", "M" ],
"lastModified": { "$date": "2021-03-05T05:00:00Z" },
"width": 6.5,
"height": 10,
}

Use o método unset() para excluir o valor de um campo em uma operação de atualização.

O exemplo seguinte exclui o campo qty:

Bson filter = eq("_id", 1);
Bson update = unset("qty");
collection.updateOne(filter, update);

O exemplo anterior atualiza o documento original para o seguinte estado:

{
"_id": 1,
"color": "red",
"vendor": [ "A", "D", "M" ],
"lastModified": { "$date": "2021-03-05T05:00:00Z" }
}

Use o método setOnInsert() para atribuir o valor de um campo em uma operação de atualização em uma inserção de um documento.

O exemplo a seguir define o valor do campo qty como "5" se um upsert resultou na inserção de um documento:

Bson filter = eq("_id", 1);
Bson update = setOnInsert("qty", 7);
collection.updateOne(filter, update, new UpdateOptions().upsert(true));

O exemplo anterior atualiza o documento original para o seguinte estado:

{
"_id": 1,
"color": "red",
"qty": 5,
"vendor": [ "A", "D", "M" ],
"lastModified": { "$date": "2021-03-05T05:00:00Z" }
}

Observação

Se o documento não for inserido, nenhuma alteração ocorrerá.

Utilize o método inc() para incrementar o valor de um campo numérico em uma operação de atualização.

O exemplo seguinte incrementa o valor do campo qty por "3":

Bson filter = eq("_id", 1);
Bson update = inc("qty", 3);
collection.updateOne(filter, update);

O exemplo anterior atualiza o documento original para o seguinte estado:

{
"_id": 1,
"color": "red",
"qty": 8,
"vendor": [ "A", "D", "M" ],
"lastModified": { "$date": "2021-03-05T05:00:00Z" }
}

Utilize o método mul() para multiplicar o valor de um campo numérico em uma operação de atualização.

O seguinte exemplo multiplica o valor do campo qty por "2":

Bson filter = eq("_id", 1);
Bson update = mul("qty", 2);
collection.updateOne(filter, update);

O exemplo anterior atualiza o documento original para o seguinte estado:

{
"_id": 1,
"color": "red",
"qty": 10,
"vendor": [ "A", "D", "M" ],
"lastModified": { "$date": "2021-03-05T05:00:00Z" }
}

Use o método rename() para renomear o valor de um campo em uma operação de atualização.

O exemplo a seguir renomeia o campo qty para "quantidade":

Bson filter = eq("_id", 1);
Bson update = rename("qty", "quantity");
collection.updateOne(filter, update);

O exemplo anterior atualiza o documento original para o seguinte estado:

{
"_id": 1,
"color": "red",
"vendor": [ "A", "D", "M" ],
"lastModified": { "$date": "2021-03-05T05:00:00Z" },
"quantity": 5
}

Use o método min() para atualizar o valor de um campo com o menor número dos dois especificados em uma operação de atualização.

Bson filter = eq("_id", 1);
Bson update = min("qty", 2);
collection.updateOne(filter, update);

O exemplo anterior atualiza o documento original para o seguinte estado:

{
"_id": 1,
"color": "red",
"qty": 2,
"vendor": [ "A", "D", "M" ],
"lastModified": { "$date": "2021-03-05T05:00:00Z" }
}

Use o método max() para atualizar o valor de um campo com o número maior dos dois especificados em uma operação de atualização.

O exemplo a seguir define o valor do campo qty para o máximo de seu valor atual e "8":

Bson filter = eq("_id", 1);
Bson update = max("qty", 8);
collection.updateOne(filter, update);

O exemplo anterior atualiza o documento original para o seguinte estado:

{
"_id": 1,
"color": "red",
"qty": 8,
"vendor": [ "A", "D", "M" ],
"lastModified": { "$date": "2021-03-05T05:00:00Z" }
}

Use o método currentDate() para atribuir o valor de um campo em uma operação de atualização para a data atual como uma data BSON.

O exemplo a seguir define o valor do campo lastModified para a data atual como uma data BSON:

Bson filter = eq("_id", 1);
Bson update = currentDate("lastModified");
collection.updateOne(filter, update);

O exemplo anterior atualiza o documento original para o seguinte estado:

{
"_id": 1,
"color": "red",
"qty": 5,
"vendor": [ "A", "D", "M" ],
"lastModified": { "$date": "2021-03-22T21:01:20.027Z" }
}

Use o método currentTimestamp() para atribuir o valor de um campo em uma operação de atualização para a data atual como timestamp.

O exemplo a seguir define o valor do campo lastModified para a data atual como um carimbo de data/hora BSON:

Bson filter = eq("_id", 1);
Bson update = currentTimestamp("lastModified");
collection.updateOne(filter, update);

O exemplo anterior atualiza o documento original para o seguinte estado:

{
"_id": 1,
"color": "red",
"qty": 5,
"vendor": [ "A", "D", "M" ],
"lastModified": { "$timestamp": { "t": 1616446880, "i": 5 } }
}

Use os métodos bitwiseOr(), bitwiseAnd() e bitwiseXor() para executar uma atualização bit a bit do valor inteiro de um campo em uma operação de atualização.

O exemplo a seguir executa um AND bitwise entre o número "10" e o valor inteiro do campo qty:

Bson filter = eq("_id", 1);
Bson update = bitwiseOr("qty", 10);
collection.updateOne(filter, update);

A operação bitwise resulta em 15:

0101
1010
----
1111

O exemplo anterior atualiza o documento original para o seguinte estado:

{
"_id": 1,
"color": "red",
"qty": 15,
"vendor": [ "A", "D", "M" ],
"lastModified": { "$date": "2021-03-05T05:00:00Z" }
}

Utilize o método addToSet() para anexar um valor a uma array se o valor ainda não estiver presente em uma operação de atualização.

O exemplo a seguir adiciona o valor "C" ao valor da array do campo vendor:

Bson filter = eq("_id", 1);
Bson update = addToSet("vendor", "C");
collection.updateOne(filter, update);

O exemplo anterior atualiza o documento original para o seguinte estado:

{
"_id": 1,
"color": "red",
"qty": 5,
"vendor": [ "A", "D", "M", "C" ],
"lastModified": { "$date": "2021-03-05T05:00:00Z" }
}

Use o método popFirst() para remover o primeiro elemento de uma array e o método popLast() para remover o último elemento de uma array em uma operação de atualização.

O exemplo a seguir retira o primeiro elemento do valor da array do campo vendor:

Bson filter = eq("_id", 1);
Bson update = popFirst("vendor");
collection.updateOne(filter, update);

O exemplo anterior atualiza o documento original para o seguinte estado:

{
"_id": 1,
"color": "red",
"qty": 5,
"vendor": [ "D", "M" ],
"lastModified": { "$date": "2021-03-05T05:00:00Z" }
}

Utilize o método pullAll() para remover todas as instâncias de valores de uma array existente em uma operação de atualização.

O exemplo a seguir remove o fornecedor "A" e "M" da array vendor:

Bson filter = eq("_id", 1);
Bson update = pullAll("vendor", Arrays.asList("A", "M"));
collection.updateOne(filter, update);

O exemplo anterior atualiza o documento original para o seguinte estado:

{
"_id": 1,
"color": "red",
"qty": 5,
"vendor": [ "D" ],
"lastModified": { "$date": "2021-03-05T05:00:00Z" }
}

Use o método pull() para remover todas as instâncias de um valor de uma array existente em uma operação de atualização.

O exemplo a seguir remove o valor " D " da array vendor:

Bson filter = eq("_id", 1);
Bson update = pull("vendor", "D");
collection.updateOne(filter, update);

O exemplo anterior atualiza o documento original para o seguinte estado:

{
"_id": 1,
"color": "red",
"qty": 5,
"vendor": [ "A", "M" ],
"lastModified": { "$date": "2021-03-05T05:00:00Z" }
}

Utilize o método push() para anexar um valor a uma array em uma operação de atualização.

Os seguintes exemplos empurram "C" para a array vendor:

Bson filter = eq("_id", 1);
Bson update = push("vendor", "C");
collection.updateOne(filter, update);

O exemplo anterior atualiza o documento original para o seguinte estado:

{
"_id": 1,
"color": "red",
"qty": 5,
"vendor": [ "A", "D", "M", "C" ],
"lastModified": { "$date": "2021-03-05T05:00:00Z" }
}

Um aplicativo pode atualizar vários campos de um único documento combinando dois ou mais operadores de atualização descritos nas seções anteriores.

O exemplo a seguir incrementa o valor do campo qty por "6", define o valor do campo color como "roxo" e empurra "R" para o campo vendor:

Bson filter = eq("_id", 1);
Bson update = combine(set("color", "purple"), inc("qty", 6), push("vendor", "R"));
collection.updateOne(filter, update);

O exemplo anterior atualiza o documento original para o seguinte estado:

{
"_id": 1,
"color": "purple",
"qty": 11,
"vendor": [ "A", "D", "M", "R" ],
"lastModified": { "$date": "2021-03-05T05:00:00Z" }
}

Voltar

Construtores de classificação