- Replication >
- Replica Set Maintenance Tutorials >
- Configure Replica Set Tag Sets
Configure Replica Set Tag Sets¶
A replica set member or members can be configured with
tags:
For read operations, you can specify a tag set in the read preferences to help direct read operations to members that have specific tag(s).
For write operations, you can use the tags to create a custom write concern.
Use Tag Sets in Read Preference¶
If a replica set member or members are associated with
tags, you can specify a tag set in the read
preference to target those members. A tag
set is an array of documents, where each document contains the tag and
value pair(s). The specifications are tried in order until a match is
found. Once found, that specification is used to find all eligible
matching members.
Note
You cannot specify a tag set when specifying read preference mode
primary.
For example, a replica set has the following replica set configuration (some of the fields have been omitted for brevity):
- Add tags to the members. - Connect a - mongoshell to the replica set and use- rs.reconfig()to add tags to the members:
- Verify the replica set configuration. - Run - rs.conf()to verify the replica set configuration (some of the fields have been omitted for brevity). The- rs.conf()returns a document similar to the following:
- Specify tag sets in the read preference. - To direct read operations to the secondaries tagged with a particular tag(s), in the - mongoshell connected to the replica set, you can use the- readPref()method to specify the read preference mode and the tag set. For example,- To direct read operations to the secondary tagged with both - "dc": "east"and- "usage": "production", include the following tag set:
- To direct a read operation to the secondaries tagged with - "dc": "east", and if not found, to secondaries tagged with- "usage": "production", include the following tag set:
 - See also 
Custom Multi-Datacenter Write Concerns¶
If a replica set member or members are associated with
tags, you can configure the replica set’s
settings.getLastErrorModes setting to create a custom write
concern.
Given a five member replica set with members in two data centers:
- a facility VAtaggeddc_va
- a facility CAtaggeddc_ca
- Add tags to the replica set members. - Connect a - mongoshell to the replica set and use- rs.reconfig()to add tags to the members:
- Create a custom write concern. - In the replica set configuration, define a custom write concern in the - settings.getLastErrorModessetting. For example, the following defines the custom write concern- MultipleDCthat requires the write to propagate to two members with different- dc_vatag values and one member with any- dc_catag value.- Note - The - MultipleDCwrite concern is not satisfied if the write propagates to two members with the same- "dc_va"tag. For example, if the write has only propagated to- members[0]and- members[4],- "dc_va": 2is not satisfied since they have the same tag value- "rack1".
- Use the custom write concern. - To use the custom write concern, pass in the write concern name to the w Option in the write concern: