Use a Hidden Member for isolating reporting or backup workloads, and a Delayed Member as a rolling backup to recover from human errors like accidental deletions.
Hidden and Delayed members are special types of secondary nodes in a MongoDB replica set designed for specific operational and recovery use cases [citation:1][citation:2]. A hidden member is invisible to client applications and is used to isolate intensive workloads [citation:2][citation:4]. A delayed member maintains a time-delayed copy of the data to act as a rolling backup against human error [citation:1][citation:5]. Both must have priority 0 to prevent them from ever becoming primary, and delayed members must also be hidden and ideally non-voting to prevent performance issues [citation:1][citation:8].
Offload reporting and analytics: You can run long, heavy reporting queries on a hidden member without impacting the performance of your primary application [citation:2][citation:4][citation:6]. This protects your production workload from being slowed down by batch jobs [citation:9].
Dedicated backups: You can take physical backups directly from a hidden member, ensuring that the backup process does not interfere with the primary or other secondaries [citation:2][citation:7].
Workload isolation: You can create indexes on a hidden member that are tailored specifically for reporting queries without replicating those indexes to the rest of the cluster [citation:6].
Recovery from human error: The primary use case is to act as a rolling, historical snapshot [citation:1][citation:5]. If an operator accidentally drops a database or collection, or an unsuccessful application upgrade corrupts data, you can recover the lost data from the delayed node before the change was applied [citation:1][citation:9].
Point-in-time recovery without backups: For a defined window (e.g., one hour), it serves as a live, running backup that can protect against recent mistakes, buying you time to recover [citation:5].
Testing against old data: You can connect directly to a delayed member (bypassing the replica set connection) to analyze or test against an older state of the data [citation:1].
Both member types must be configured with priority: 0 [citation:1][citation:8]. Additionally, a delayed member must be configured with hidden: true and secondaryDelaySecs: <seconds> [citation:1][citation:5]. For optimal cluster performance, it is also recommended to make them non-voting by setting votes: 0 [citation:1][citation:5]. This prevents them from delaying the majority commit point if other nodes fail, which can cause write performance issues and cache pressure [citation:1][citation:2][citation:7].