Definition
changeStreamOptionsNew in version 6.0.
Available for both
mongodandmongos.An object that contains change stream configuration options.
You can only set
changeStreamOptionsonmongosor a replica set primary. The value is set cluster-wide.
Syntax
To set changeStreamOptions for your deployment, run the following command on
the admin database:
db.adminCommand( { setClusterParameter: { changeStreamOptions: <value> } } )
To view current values for the changeStreamOptions cluster parameter, run
the following command on the admin database:
db.adminCommand( { getClusterParameter: "changeStreamOptions" } )
Parameter Fields
changeStreamOptions.preAndPostImages.expireAfterSecondsNew in version 6.0.
Default: off
Controls the retention policy of change stream pre- and post-images. Pre- and post-images are the versions of a document before and after document modification respectively.
expireAfterSecondscontrols how long MongoDB retains pre- and post-images.When
expireAfterSecondsisoff, MongoDB uses the default retention policy: pre- and post-images are retained until the corresponding change stream events are removed from the oplog.To set the minimum pre- and post-image retention time, specify an integer value for
expireAfterSeconds.Important
Services that use change streams, including Triggers and Device Sync, might rely on the availability of pre-image data. If you set
expireAfterSecondstoo low, you may increase the risk of interrupting sync or triggers processing.When setting
expireAfterSecondsfor pre-images, ensure that you:Specify a value that isn't lower than the typical change stream lag for the service.
Add buffer time to allow the service to resume manually before risking oplog data loss.
Behavior
If a change stream event is removed from the oplog, then the corresponding pre-
and post-images are also deleted regardless of the retention time specified with
changeStreamOptions.preAndPostImages.expireAfterSeconds.
Example
The following example sets the retention time for pre- and post-images in change
streams to 100 seconds:
db.runCommand( { setClusterParameter: { changeStreamOptions: { preAndPostImages: { expireAfterSeconds: 100 } } } } )