Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /
Claves de partición

Cambiar el valor de la clave de partición de un documento

Puede actualizar el valor de la clave de partición de un documento a menos que el campo clave de partición sea inmutable. _id .

Importante

Al actualizar el valor de la clave del fragmento

  • Debes estar en un mongos. No emitir la operación directamente en la partición.

  • Usted debe ejecutar ya sea en una transacción o como una escritura reintentable.

  • Debe incluir una condición de igualdad en la clave de partición completa en el filtro de query. Por ejemplo, considera una colección messages que utiliza { activityid: 1, userid : 1 } como clave de partición. Para actualizar el valor de la clave de partición de un documento, necesitas incluir activityid: <value>, userid: <value> en el filtro de query. Puedes incluir campos adicionales en la query según corresponda.

Consulte también los métodos/comandos de escritura específicos para conocer los requisitos adicionales específicos de la operación cuando se ejecuta contra una colección fragmentada.

Para actualizar un valor de la clave de partición, utilice las siguientes operaciones:

Comando
Método

actualizar con multi: false

Para establecer un valor nonull, la actualización debe realizarse dentro de una transacción o como una escritura reintentable.

Para configurar un valor que no seanull, la actualización debe realizarse dentro de una transacción o como una escritura reintentable.

Si la modificación de la clave de fragmento da como resultado mover el documento a otro fragmento, no puede especificar más de una modificación de clave de fragmento en la operación masiva; el tamaño del lote debe ser 1.

Si la modificación de la clave de partición no resulta en mover el documento a otra partición, puedes especificar varias modificaciones de la clave de partición en la operación en bloque.

Para establecerlo en un valor que no seanull, la operación debe realizarse dentro de una transacción o como una escritura reintentable.

Advertencia

Los documentos en colecciones particionadas pueden no tener los campos de clave de partición. Toma precauciones para evitar remover accidentalmente la clave de partición al cambiar el valor de clave de partición de un documento.

Considera una colección sales que está particionada en el campo location. La colección contiene un documento con el _id 12345 y el location "". Para actualizar el valor del campo de este documento, puedes ejecutar el siguiente comando:

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

Tip

Volver

Reshard a Collection

En esta página