Resumen
updateUn evento
updateocurre cuando una operación actualiza un documento en una colección.Nota
Desambiguación
Para obtener más información sobre los eventos que ocurren cuando se modifican las opciones de recopilación, consulte la
modifyevento.
Descripción
Campo | Tipo | Descripción | |||
|---|---|---|---|---|---|
| Documento | Un objeto BSON que sirve como identificador del evento de flujo de cambios. Este valor se utiliza como El Para ver un ejemplo de cómo reanudar un flujo de cambios | |||
| Marca de tiempo |
Debido a los límites de tamaño del registro de operaciones, lastransacciones multidocumento pueden crear varias entradas del registro de operaciones. En una transacción, los eventos de flujo de cambios almacenados en una entrada del registro de operaciones comparten el En clústeres fragmentados, es posible que los eventos con el mismo Para identificar eventos para una sola transacción, puede utilizar la combinación de | |||
| UUID | UUID que identifica la colección donde ocurrió el cambio. Novedades en la versión 6.0. El | |||
| Documento | ||||
| Documento | El documento creado o modificado por una operación CRUD. Este campo solo aparece si configuraste el flujo de cambios con Para obtener más información, consulte Buscar documento completo para operaciones de actualización. Cambiado en la versión 6.0. A partir de MongoDB,6.0 si configura la | |||
| Documento | El documento antes de que la operación aplicara los cambios. Es decir, la preimagen del documento. Este campo está disponible cuando habilita el Novedades en la versión 6.0. | |||
| Documento | El identificador de la sesión asociada con la transacción. Sólo está presente si la operación es parte de una transacción de múltiples documentos. | |||
| Documento | El espacio de nombres (base de datos y/o colección) afectado por el evento. | |||
| string | El nombre de la colección donde ocurrió el evento. | |||
| string | El nombre de la base de datos donde ocurrió el evento. | |||
| string | El tipo de operación que informa la notificación de cambio. Devuelve un valor de | |||
| Documento | Un documento que describe los campos que se actualizaron o eliminaron mediante la operación de actualización. | |||
updateDescription.removedFields | arreglo | Una matriz de campos que fueron eliminados por la operación de actualización. | |||
updateDescription.truncatedArrays | arreglo | Una matriz de documentos que registran truncamientos de matriz realizados con actualizaciones basadas en canalizaciones utilizando una o más de las siguientes etapas: Si se reemplaza toda la matriz, los truncamientos se informarán en updateDescription.updatedFields. | |||
updateDescription.truncatedArrays.field | string | El nombre del campo truncado. | |||
updateDescription.truncatedArrays.newSize | entero | El número de elementos en la matriz truncada. | |||
updateDescription.updatedFields | Documento | Un documento cuyas claves corresponden a los campos modificados por la operación de actualización. El valor de cada campo corresponde al nuevo valor de dichos campos, y no a la operación que generó dicho nuevo valor. | |||
| Número largo | Junto con el lsid, un número que ayuda a identificar de forma única una transacción. Sólo está presente si la operación es parte de una transacción de múltiples documentos. | |||
| La fecha y hora del servidor de la operación de la base de datos. Novedades en la versión 6.0. |
Comportamiento
Documentar imágenes previas y posteriores
A partir de MongoDB 6.0, verá un documento fullDocumentBeforeChange con los campos anteriores a que se cambiara (o eliminara) el documento si realiza estos pasos:
Habilite el nuevo
changeStreamPreAndPostImagescampo para una colección usando,db.createCollection()createcollModo.Establezca
fullDocumentBeforeChange"required""whenAvailable"db.collection.watch()en o en.
Ejemplo de documento fullDocumentBeforeChange en la salida del flujo de cambios:
"fullDocumentBeforeChange" : { "_id" : ObjectId("599af247bb69cd89961c986d"), "userName" : "alice123", "name" : "Alice Smith" }
Para obtener ejemplos completos con la salida del flujo de cambios, consulta Flujos de cambio con imágenes previas y posteriores de documentos.
Las imágenes previas y posteriores no están disponibles para un evento de flujo de cambios si las imágenes fueron:
No está habilitado en la colección en el momento de la operación de actualización o eliminación de un documento.
Eliminado después del tiempo de retención de imágenes previas y posteriores establecido en
expireAfterSeconds.El siguiente ejemplo configura
expireAfterSecondsen100segundos en todo el clúster:use admin db.runCommand( { setClusterParameter: { changeStreamOptions: { preAndPostImages: { expireAfterSeconds: 100 } } } } ) El siguiente ejemplo devuelve la configuración actual de
changeStreamOptions, incluyendoexpireAfterSeconds:db.adminCommand( { getClusterParameter: "changeStreamOptions" } ) Configurar
expireAfterSecondsenoffutiliza la política de retención por defecto: las imágenes previas y posteriores se conservan hasta que los eventos correspondientes del flujo de cambios se eliminan del oplog.Si se elimina un evento de flujo de cambios del oplog, las imágenes previas y posteriores correspondientes también se eliminan independientemente del tiempo de retención de las imágenes previas y posteriores
expireAfterSeconds.
Consideraciones adicionales:
Habilitar las imágenes previas y posteriores consume espacio de almacenamiento y aumenta el tiempo de procesamiento. Habilita solo las imágenes previas y de publicación si las necesitas.
Limita el tamaño del evento del flujo de cambios a menos de 16 mebibytes. Para limitar el tamaño del evento, puedes:
Limita el tamaño del documento a 8 megabytes. Puedes solicitar imágenes previas y posteriores simultáneamente en la salida del flujo de cambios si otros campos de eventos del flujo de cambios como
updateDescriptionno son grandes.Solicita solo imágenes posteriores en la salida del flujo de cambios para documentos de hasta 16 mebibytes si otros campos de eventos del flujo de cambios como
updateDescriptionno son grandes.Solicita solo imágenes previas en la salida del flujo de cambios para documentos de hasta 16 mebibytes si:
las actualizaciones de documento afectan solo a una pequeña fracción de la estructura o el contenido del documento, y
no cause un evento de cambio
replace. Un eventoreplacesiempre incluye la imagen de publicación.
Para realizar una solicitud de imagen previa, debes establecer
fullDocumentBeforeChangeenrequiredowhenAvailableendb.collection.watch(). Para solicitar una imagen posterior, establecefullDocumentmediante el mismo método.Las preimágenes se escriben en la colección
config.system.preimages.La colección
config.system.preimagespuede agrandarse. Para limitar el tamaño de la colección, puedes establecer el tiempo aexpireAfterSecondspara las imágenes previas como se mostró antes.Las imágenes previas se eliminan de forma asincrónica mediante un proceso en segundo plano.
Importante
Característica incompatible con versiones anteriores
A partir de MongoDB 6.0, si utilizas imágenes previas y posteriores de documentos para los flujos de cambios, debes deshabilitar changeStreamPreAndPostImages para cada colección mediante el comando collMod antes de poder volver a una versión anterior de MongoDB.
Tip
Para los eventos y resultados del flujo de cambios, consulta Eventos de cambio.
Para buscar cambios en una colección, consulta
db.collection.watch().Para obtener ejemplos completos con la salida del flujo de cambios, consulta Flujos de cambio con imágenes previas y posteriores de documentos.
Ejemplo
El siguiente ejemplo ilustra un evento update:
{ "_id": { <Resume Token> }, "operationType": "update", "clusterTime": <Timestamp>, "wallTime": <ISODate>, "ns": { "db": "engineering", "coll": "users" }, "documentKey": { "_id": ObjectId("58a4eb4a30c75625e00d2820") }, "updateDescription": { "updatedFields": { "email": "alice@10gen.com" }, "removedFields": ["phoneNumber"], "truncatedArrays": [ { "field" : "vacation_time", "newSize" : 36 } ] } }
El siguiente ejemplo ilustra un evento update para flujos de cambio abiertos con la opción fullDocument : updateLookup:
{ "_id": { <Resume Token> }, "operationType": "update", "clusterTime": <Timestamp>, "wallTime": <ISODate>, "ns": { "db": "engineering", "coll": "users" }, "documentKey": { "_id": ObjectId("58a4eb4a30c75625e00d2820") }, "updateDescription": { "updatedFields": { "email": "alice@10gen.com" }, "removedFields": ["phoneNumber"], "truncatedArrays": [ { "field" : "vacation_time", "newSize" : 36 } ] }, "fullDocument": { "_id": ObjectId("58a4eb4a30c75625e00d2820"), "name": "Alice", "userName": "alice123", "email": "alice@10gen.com", "team": "replication" } }
El documento fullDocument representa la versión más actual comprometida por mayoría del documento actualizado. El documento fullDocument puede variar del documento en el momento de la operación de actualización, dependiendo de la cantidad de operaciones intercaladas comprometidas por mayoría que ocurran entre la operación de actualización y la búsqueda del documento.