Menu Docs

Página inicial do DocsDesenvolver aplicaçõesManual do MongoDB

Alterar o valor da chave de fragmentação de um documento

Nesta página

  • Exemplo

A partir do MongoDB 4.2, você pode atualizar o valor da chave do shard de um documento, a menos que o campo chave do shard seja o campo imutável _id.

Importante

Ao atualizar o valor chave do shard

  • Você deve estar em um mongos. Não emita a operação diretamente no shard.

  • Você deve executar em uma transação ou como uma gravação que pode ser repetida.

  • Você deve incluir uma condição de igualdade na chave de shard completa no filtro de query. Por exemplo, considere uma coleção messages que utiliza { activityid: 1, userid : 1 } como a chave de shard. Para atualizar o valor chave do shard de um documento, você deve incluir activityid: <value>, userid: <value> no filtro de query. Você pode incluir campos adicionais na query conforme apropriado.

Consulte também o comando/métodos de gravação específicos para obter requisitos específicos de operação adicionais quando executados em uma coleção fragmentada.

Para atualizar um valor chave de shard, use as seguintes operações:

Comando
Método
atualizar com multi: false

Para definir como um valor nãonull, a de atualizaçãodeve ser executada dentro de uma transação ou como uma gravação repetível.

Para definir como um valor nãonull , a atualização deve ser executada dentro de uma transação ou como uma gravação repetível.

Se a modificação da chave do shard resultar na transferência do documento para outro shard, você não poderá especificar mais de uma modificação da chave do shard na operação em massa; o tamanho do lote deve ser 1.

Se a modificação da chave de shard não resultar na movimentação do documento para outro shard, você poderá especificar várias modificações de chave de shard na operação em massa.

Para definir como um valor diferente denull, a operação deve ser executada dentro de uma transação ou como uma gravação que pode ser repetida.

Aviso

Documento em collection fragmentadas podem não ter os campo da chave de fragmento. Tenha cuidado para não remover acidentalmente a chave de fragmento ao alterar o valor da chave de fragmento de um documento.

Considere uma coleção sales fragmentada no campo location. A coleção contém um documento com o _id 12345 e o location "". Para atualizar o valor do campo para este documento, você pode executar o seguinte comando:

db.sales.updateOne(
{ _id: 12345, location: "" },
{ $set: { location: "New York"} }
)

Dica

← Refragmentar uma collection

Nesta página