Docs Menu
Docs Home
/ /
Eventos de cambios

eliminar evento

delete

Un evento delete ocurre cuando las operaciones eliminan documentos de una colección, como cuando un usuario o una aplicación ejecutan el delete dominio.

Campo
Tipo
Descripción

_id

Documento

Un objeto BSON que sirve como identificador del evento de flujo de cambios. Este valor se utiliza como resumeToken para el resumeAfter parámetro al reanudar un flujo de cambios. El _id objeto tiene la siguiente forma:

{
"_data" : <BinData|hex string>
}

El _data tipo depende de las versiones de MongoDB y, en algunos casos, de la versión de compatibilidad de funciones (FCV) vigente al momento de la apertura o reanudación del flujo de cambios.Consulte Tokens de reanudación para ver la lista completa de _data tipos.

Para ver un ejemplo de cómo reanudar un flujo de cambios resumeToken por, consulte Reanudar un flujo de cambios.

clusterTime

Marca de tiempo

clusterTime es la marca de tiempo de la entrada del registro de operaciones asociada con el evento.

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 clusterTime mismo.

En clústeres fragmentados, es posible que los eventos con el mismo clusterTime no se relacionen todos con la misma transacción. Algunos eventos no se relacionan con ninguna transacción.

Para identificar eventos para una sola transacción, puede utilizar la combinación de lsid y txnNumber en el documento de evento de flujo de cambios.

collectionUUID

UUID

UUID que identifica la colección donde ocurrió el cambio.

Novedades en la versión 6.0.

El collectionUUID campo solo se incluye si el flujo de cambios se crea con el showExpandedEvents campo establecido true en. Para más detalles, consulte showExpandedEvents.

documentKey

Documento

Documento que contiene el _id valor del documento creado o modificado por la operación CRUD.

En las colecciones fragmentadas, este campo también muestra la clave de fragmento completa del documento. El campo _id no se repite si ya forma parte de la clave de fragmento.

lsid

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.

ns

Documento

El espacio de nombres (base de datos y/o colección) afectado por el evento.

ns.coll

string

El nombre de la colección donde ocurrió el evento.

ns.db

string

El nombre de la base de datos donde ocurrió el evento.

operationDescription

Documento

Información adicional sobre la operación de cambio.

Este documento y sus subcampos solo aparecen cuando el flujo de cambios utiliza eventos expandidos.

Novedades en la versión 6.0.

operationType

string

El tipo de operación que informa la notificación de cambio.

Devuelve un valor de delete para estos eventos de cambio.

txnNumber

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.

wallTime

La fecha y hora del servidor de la operación de la base de datos. wallTime se diferencia de clusterTime en que clusterTime es una marca de tiempo tomada de la entrada del registro de operaciones asociada con el evento de operación de la base de datos.

Novedades en la versión 6.0.

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:

  1. Habilite el nuevo changeStreamPreAndPostImages campo para una colección usando,db.createCollection() create collModo.

  2. 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 expireAfterSeconds en 100 segundos en todo el clúster:

      use admin
      db.runCommand( {
      setClusterParameter:
      { changeStreamOptions: {
      preAndPostImages: { expireAfterSeconds: 100 }
      } }
      } )
    • El siguiente ejemplo devuelve la configuración actual de changeStreamOptions, incluyendo expireAfterSeconds:

      db.adminCommand( { getClusterParameter: "changeStreamOptions" } )
    • Configurar expireAfterSeconds en off utiliza 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 updateDescription no 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 updateDescription no 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 evento replace siempre incluye la imagen de publicación.

  • Para realizar una solicitud de imagen previa, debes establecer fullDocumentBeforeChange en required o whenAvailable en db.collection.watch(). Para solicitar una imagen posterior, establece fullDocument mediante el mismo método.

  • Las preimágenes se escriben en la colección config.system.preimages.

    • La colección config.system.preimages puede agrandarse. Para limitar el tamaño de la colección, puedes establecer el tiempo a expireAfterSeconds para 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

El siguiente ejemplo ilustra un evento delete:

{
"_id": { <Resume Token> },
"operationType": "delete",
"clusterTime": <Timestamp>,
"wallTime": <ISODate>,
"ns": {
"db": "engineering",
"coll": "users"
},
"documentKey": {
"_id": ObjectId("599af247bb69cd89961c986d")
}
}

El documento fullDocument se omite porque ya no existe en el momento en que el cursor del flujo de cambio envía el evento delete al cliente.

Volver

createIndexes

En esta página