Navigation

Atlas Replica Set Tags

Info With Circle IconCreated with Sketch.Note
Feature unavailable in Free and Shared-Tier Clusters

This feature is not available for M0 (Free Tier), M2, and M5 clusters. To learn more about which features are unavailable, see Atlas M0 (Free Tier), M2, and M5 Limitations.

Atlas clusters are configured with pre-defined replica set tags for different member types in the cluster. You can utilize these pre-defined replica set tags to direct queries from specific applications to desired node types and regions. These tags sets allow you to customize read preferences for a replica set, thus improving cluster performance and reliability.

To use replica set tags in your connection string and direct queries to desired nodes, set the tag in your the readPreferenceTags connection string option. For examples, see Use Cases and Examples.

The following table describes the pre-defined replica set tags Atlas implements.

Tag NameDescriptionExample
Provider

Cloud provider on which the node is provisioned.

Possible values are:

  • AWS
  • GCP
  • AZURE
{"provider" : "AWS"}
Region

Cloud region in which the node resides.

For a complete list of possible region values for each cloud provider, refer to the cloud provider's reference page:

{"region" : "US_EAST_2"}
Node Type

Node type.

Possible values are:

  • ELECTABLE
  • READ_ONLY
  • ANALYTICS
  • OPERATIONAL

For more information, see Node Types.

{"nodeType" : "ANALYTICS"}

The following table describes the possible nodeType values in your replica set tags.

Node TypeDescription
ELECTABLERead from nodes eligible to be elected primary. ELECTABLE nodes correspond to Electable nodes for high availability in the cluster creation UI.
READ_ONLYRead from read-only nodes. READ_ONLY nodes correspond to Read-only nodes for optimal local reads in the cluster creation UI.
ANALYTICSRead from read-only analytics nodes. ANALYTICS nodes correspond to Analytics nodes for workload isolation in the cluster creation UI.
OPERATIONALRead from non-analytics nodes. These nodes may either be electable or read-only nodes. Use this tag to distribute your workload evenly among your non-analytics nodes.

To learn how to configure electable, read-only, and analytics nodes for your cluster, see High Availability and Workload Isolation Options.

Bulb IconTip
See Also:

For details on how these replica set tags correspond to BI Connector for Atlas read preferences, refer to the BI Connector cluster options section of the Create a Cluster Page.

Consider the following scenarios where utilizing pre-defined replica set tags would be beneficial, and see the corresponding sample connection strings.

Info With Circle IconCreated with Sketch.Note

Each of the following example connection strings employ the readConcernLevel=local connection string option. Specifying a read concern of local ensures that secondary reads on sharded clusters do not return orphaned documents. You do not need to specify this option when connecting to non-sharded replica sets.

If an application performs complex or long-running operations, such as ETL or reporting, you may want to isolate the application's queries from the rest of your operational workload by connecting exclusively to analytics nodes.

Consider the following connection string:

mongodb+srv://$[username]:<PASSWORD>@foo-q8x1v.mycluster.com/test?readPreference=secondary&readPreferenceTags=nodeType:ANALYTICS&readConcernLevel=local

The connection string options appear in the following order:

  • readPreference=secondary
  • readPreferenceTags=nodeType:ANALYTICS
  • readConcernLevel=local

The readPreference option of secondary and readPreferenceTag option of { nodeType : ANALYTICS } limit the application connections to analytic nodes.

In conjunction with the previous example, you may want isolate regular application reads from the workload on analytics nodes.

Consider the following connection string:

mongodb+srv://$[username]:<PASSWORD>@foo-q8x1v.mycluster.com/test?readPreference=secondary&readPreferenceTags=nodeType:OPERATIONAL&readConcernLevel=local

The connection string options appear in the following order:

  • readPreference=secondary
  • readPreferenceTags=nodeType:OPERATIONAL
  • readConcernLevel=local

The specified options prevent your application from reading from analytics nodes. The application must read from operational, or non-analytics, nodes.

You can utilize Atlas replica set tags to target local reads to specific regions for globally distributed applications. Prior to the introduction of these tags, local reads for globally distributed applications relied on correctly calculating the nearest read preference. With Atlas replica set tags, specifying appropriate geographic tags in combination with a read preference mode of nearest provides more consistent behavior.

The following connection string prioritizes connections to the AWS US_EAST_1 region, followed by the US_EAST_2 region:

mongodb+srv://$[username]:<PASSWORD>@foo-q8x1v.mycluster.com/test?readPreference=nearest&readPreferenceTags=provider:AWS,region:US_EAST_1&readPreferenceTags=provider:AWS,region:US_EAST_2&readPreferenceTags=&readConcernLevel=local

The connection string options appear in the following order:

  • readPreference=nearest
  • readPreferenceTags=provider:AWS,region:US_EAST_1
  • readPreferenceTags=provider:AWS,region:US_EAST_2
  • readPreferenceTags=
  • readConcernLevel=local

Atlas considers each read preference tag in the order you specify them. After Atlas matches a node to a tag, it finds all eligible nodes that match that tag. Atlas then ignores any following readPreferenceTags.

In this example, the application first tries to connect to a node in AWS region US_EAST_1. If there no nodes in that region are available, the application tries to connect to a node in AWS region US_EAST_2.

The final (empty) readPreferenceTags= provides a fallback option. With an empty readPreferenceTags= option, the application can connect to any available node regardless of provider or region.

These options help ensure that the application connects to the closest geographic region for reduced latency and improved performance.

Bulb IconTip
See Also:

For additional information and use cases for various read preferences, refer to the Read Preference page in the MongoDB Manual.

Atlas provides built-in custom write concerns for multi-region clusters. Write concern describes the level of acknowledgment requested from MongoDB for write operations to a cluster.

Atlas's built-in custom write concerns can help improve data consistency by ensuring your operations are propagated to a set number of regions to succeed.

To use a custom write concern, specify the write concern in the write concern document of your operation.

Atlas provides the following custom write concerns for multi-region clusters:

Write ConcernTagsDescription
twoRegions{ region: 2 }Write operations must be acknowledged by at least two regions in your cluster.
threeRegions{ region: 3 }Write operations must be acknowledged by at least three regions in your cluster.
twoProviders{ provider: 2 }Write operations must be acknowledged by at least two regions in your cluster with distinct cloud providers.
Beaker IconExample

Consider a multi-region cluster across three regions: us-east-1, us-east-2, and us-west-1. You want to have write operations propagate to all three regions in your cluster before Atlas accepts them.

The following operation inserts a document and requires that the operation be propagated to all three regions due to the { w: "threeRegions" } write concern object:

db.employees.insertOne(
{ name: "Bob Smith", company: "MongoDB" },
{ writeConcern: { w: "threeRegions" } }
)
Give Feedback