Puede actualizar el valor de la clave de fragmento de un documento a menos que el campo de clave de fragmento sea inmutable. _id campo.
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 clave de fragmento, utilice las siguientes operaciones:
Comando | Método |
|---|---|
actualizar con | Para establecer un valor distinto de |
Para establecer un | |
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 fragmento no da como resultado el traslado del documento a otro fragmento, puede especificar varias modificaciones de clave de fragmento en la operación masiva. Para establecer un |
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
Considere una colección sales fragmentada en el campo location. La colección contiene un documento con _id 12345 y location "". Para actualizar el valor del campo de este documento, puede ejecutar el siguiente comando:
db.sales.updateOne( { _id: 12345, location: "" }, { $set: { location: "New York"} } )