Class ChangeStreamDocument<TDocument>

java.lang.Object
com.mongodb.client.model.changestream.ChangeStreamDocument<TDocument>
Type Parameters:
TDocument - The type that this collection will encode the fullDocument field into.

public final class ChangeStreamDocument<TDocument> extends Object
Represents the $changeStream aggregation output document.

Note: this class will not be applicable for all change stream outputs. If using custom pipelines that radically change the change stream result, then an alternative document format should be used.

Since:
3.6
  • Constructor Details

    • ChangeStreamDocument

      public ChangeStreamDocument(@Nullable @BsonProperty("operationType") String operationType, @BsonProperty("resumeToken") org.bson.BsonDocument resumeToken, @Nullable @BsonProperty("ns") org.bson.BsonDocument namespaceDocument, @Nullable @BsonProperty("nsType") String namespaceType, @Nullable @BsonProperty("to") org.bson.BsonDocument destinationNamespaceDocument, @Nullable @BsonProperty("fullDocument") TDocument fullDocument, @Nullable @BsonProperty("fullDocumentBeforeChange") TDocument fullDocumentBeforeChange, @Nullable @BsonProperty("documentKey") org.bson.BsonDocument documentKey, @Nullable @BsonProperty("clusterTime") org.bson.BsonTimestamp clusterTime, @Nullable @BsonProperty("updateDescription") UpdateDescription updateDescription, @Nullable @BsonProperty("txnNumber") org.bson.BsonInt64 txnNumber, @Nullable @BsonProperty("lsid") org.bson.BsonDocument lsid, @Nullable @BsonProperty("wallTime") org.bson.BsonDateTime wallTime, @Nullable @BsonProperty("splitEvent") SplitEvent splitEvent, @Nullable @BsonProperty org.bson.BsonDocument extraElements)
      Creates a new instance
      Parameters:
      operationType - the operation type
      resumeToken - the resume token
      namespaceDocument - the BsonDocument representing the namespace
      namespaceType - the namespace type
      destinationNamespaceDocument - the BsonDocument representing the destinatation namespace
      fullDocument - the full document
      fullDocumentBeforeChange - the full document before change
      documentKey - a document containing the _id of the changed document
      clusterTime - the cluster time at which the change occured
      updateDescription - the update description
      txnNumber - the transaction number
      lsid - the identifier for the session associated with the transaction
      wallTime - the wall time of the server at the moment the change occurred
      splitEvent - the split event
      extraElements - any extra elements that are part of the change stream document but not otherwise mapped to fields
      Since:
      4.11
  • Method Details

    • getResumeToken

      public org.bson.BsonDocument getResumeToken()
      Returns the resumeToken
      Returns:
      the resumeToken
    • getNamespace

      @BsonIgnore @Nullable public MongoNamespace getNamespace()
      Returns the namespace, derived from the "ns" field in a change stream document.

      The invalidate operation type does include a MongoNamespace in the ChangeStreamDocument response. The dropDatabase operation type includes a MongoNamespace, but does not include a collection name as part of the namespace.

      Returns:
      the namespace. If the namespaceDocument is null or if it is missing either the 'db' or 'coll' keys, then this will return null.
      See Also:
    • getNamespaceDocument

      @BsonProperty("ns") @Nullable public org.bson.BsonDocument getNamespaceDocument()
      Returns the namespace document, derived from the "ns" field in a change stream document.

      The namespace document is a BsonDocument containing the values associated with a MongoNamespace. The 'db' key refers to the database name and the 'coll' key refers to the collection name.

      Returns:
      the namespaceDocument
      Since:
      3.8
      See Also:
    • getNamespaceTypeString

      @Nullable public String getNamespaceTypeString()
      Returns the type of the newly created namespace object as a String, derived from the "nsType" field in a change stream document.

      This method is useful when using a driver release that has not yet been updated to include a newer namespace type in the NamespaceType enum. In that case, getNamespaceType() will return NamespaceType.OTHER and this method can be used to retrieve the actual namespace type as a string value.

      May return null only if $changeStreamSplitLargeEvent is used.

      Returns:
      the namespace type as a string
      Since:
      5.6
      See Also:
      Since server release
      8.1
    • getNamespaceType

      @Nullable public NamespaceType getNamespaceType()
      Returns the type of the newly created namespace object, derived from the "nsType" field in a change stream document.
      Returns:
      the namespace type.
      Since:
      5.6
      See Also:
      Since server release
      8.1
    • getDestinationNamespace

      @BsonIgnore @Nullable public MongoNamespace getDestinationNamespace()
      Returns the destination namespace, derived from the "to" field in a change stream document.

      The destination namespace is used to indicate the destination of a collection rename event.

      Returns:
      the namespace. If the "to" document is null or absent, then this will return null.
      Since:
      3.11
      See Also:
    • getDestinationNamespaceDocument

      @BsonProperty("to") @Nullable public org.bson.BsonDocument getDestinationNamespaceDocument()
      Returns the destination namespace document, derived from the "to" field in a change stream document.

      The destination namespace document is a BsonDocument containing the values associated with a MongoNamespace. The 'db' key refers to the database name and the 'coll' key refers to the collection name.

      Returns:
      the destinationNamespaceDocument
      Since:
      3.11
    • getDatabaseName

      @BsonIgnore @Nullable public String getDatabaseName()
      Returns the database name
      Returns:
      the databaseName. If the namespaceDocument is null or if it is missing the 'db' key, then this will return null.
      Since:
      3.8
    • getFullDocument

      @Nullable public TDocument getFullDocument()
      Returns the fullDocument.

      Always present for operations of type OperationType.INSERT and OperationType.REPLACE. Also present for operations of type OperationType.UPDATE if the user has specified FullDocument.UPDATE_LOOKUP for the fullDocument option when creating the change stream.

      For operations of type OperationType.INSERT and OperationType.REPLACE, the value will contain the document being inserted or the new version of the document that is replacing the existing document, respectively.

      For operations of type OperationType.UPDATE, the value will contain a copy of the full version of the document from some point after the update occurred. If the document was deleted since the updated happened, the value may be null.

      Contains the point-in-time post-image of the modified document if the post-image is available and either FullDocument.REQUIRED or FullDocument.WHEN_AVAILABLE was specified for the fullDocument option when creating the change stream. A post-image is always available for OperationType.INSERT and OperationType.REPLACE events.

      Returns:
      the fullDocument
    • getFullDocumentBeforeChange

      @Nullable public TDocument getFullDocumentBeforeChange()
      Returns the fullDocument before change

      Contains the pre-image of the modified or deleted document if the pre-image is available for the change event and either FullDocumentBeforeChange.REQUIRED or FullDocumentBeforeChange.WHEN_AVAILABLE was specified for the fullDocumentBeforeChange option when creating the change stream. If FullDocumentBeforeChange.WHEN_AVAILABLE was specified but the pre-image is unavailable, the value will be null.

      Returns:
      the fulDocument before change
      Since:
      4.7
      Since server release
      6.0
    • getDocumentKey

      @Nullable public org.bson.BsonDocument getDocumentKey()
      Returns a document containing just the _id of the changed document.

      For unsharded collections this contains a single field, _id, with the value of the _id of the document updated. For sharded collections, this will contain all the components of the shard key in order, followed by the _id if the _id isn’t part of the shard key.

      Returns:
      the document key, or null if the event is not associated with a single document (e.g. a collection rename event)
    • getClusterTime

      @Nullable public org.bson.BsonTimestamp getClusterTime()
      Gets the cluster time at which the change occurred.
      Returns:
      the cluster time at which the change occurred
      Since:
      3.8
      Since server release
      4.0
    • getOperationTypeString

      @Nullable public String getOperationTypeString()
      Returns the operation type as a string.

      This method is useful when using a driver release that has not yet been updated to include a newer operation type in the OperationType enum. In that case, getOperationType() will return OperationType.OTHER and this method can be used to retrieve the actual operation type as a string value.

      May return null only if $changeStreamSplitLargeEvent is used.

      Returns:
      the operation type as a string
      Since:
      4.6
      See Also:
    • getOperationType

      @Nullable public OperationType getOperationType()
      Returns the operationType.

      May return null only if $changeStreamSplitLargeEvent is used.

      Returns:
      the operationType
    • getUpdateDescription

      @Nullable public UpdateDescription getUpdateDescription()
      Returns the updateDescription
      Returns:
      the updateDescription, or null if the event is not associated with a single document (e.g. a collection rename event)
    • getTxnNumber

      @Nullable public org.bson.BsonInt64 getTxnNumber()
      Returns the transaction number
      Returns:
      the transaction number, or null if not part of a multi-document transaction
      Since:
      3.11
      Since server release
      4.0
    • getLsid

      @Nullable public org.bson.BsonDocument getLsid()
      Returns the identifier for the session associated with the transaction
      Returns:
      the lsid, or null if not part of a multi-document transaction
      Since:
      3.11
      Since server release
      4.0
    • getWallTime

      @Nullable public org.bson.BsonDateTime getWallTime()
      The wall time of the server at the moment the change occurred.
      Returns:
      The wall time of the server at the moment the change occurred.
      Since:
      4.7
      Since server release
      6.0
    • getSplitEvent

      @Nullable public SplitEvent getSplitEvent()
      The split event.
      Returns:
      the split event
      Since:
      4.11
      Since server release
      6.0.9
    • getExtraElements

      @Nullable public org.bson.BsonDocument getExtraElements()
      Any extra elements that are part of the change stream document but not otherwise mapped to fields.
      Returns:
      Any extra elements that are part of the change stream document but not otherwise mapped to fields.
      Since:
      4.7
    • createCodec

      public static <TFullDocument> org.bson.codecs.Codec<ChangeStreamDocument<TFullDocument>> createCodec(Class<TFullDocument> fullDocumentClass, org.bson.codecs.configuration.CodecRegistry codecRegistry)
      Creates the codec for the specific ChangeStreamOutput type
      Type Parameters:
      TFullDocument - the fullDocument type
      Parameters:
      fullDocumentClass - the class to use to represent the fullDocument
      codecRegistry - the codec registry
      Returns:
      the codec
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • toString

      public String toString()
      Overrides:
      toString in class Object