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
messagesque utiliza{ activityid: 1, userid : 1 }como clave de partición. Para actualizar el valor de la clave de partición de un documento, necesitas incluiractivityid: <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 | Para establecer un valor no |
Para configurar un valor que no sea | |
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 sea |
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.
Ejemplo
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"} } )