If you want to set tags with your read preference (whatever it is except primary), you have to set it manually, something such as:
DBCollection collection = ...
ReadPreference dcReadPref =
ReadPreference.nearest(new BasicDBObject("dc", "east"));
collection.findOne(new BasicDBObject("field", "value"), null, dcReadPref);
Unfortunately, the find()
method doesn't have a variance including ReadPreference
as argument (at least couldn't find such in javadoc) . You will have to do something like this:
DBCollection collection = ...
ReadPreference defaultReadPref = collection.getReadPreference();
collection.setReadPreference(dcReadPref);
...
collection.find(new BasicDBObject("field", "value"));
...
collection.setReadPreference(defaultReadPref); // when done restore default
You can set read preference (w/wo tags) at driver, database, collection or operation level.
To also include your environment in tags set:
String env = ... / get it from somewhere
DBObject dcTag = new BasicDBObject("dc", "east"):
DBObject envTag = new BasicDBObject("use", env);
ReadPreference pref = ReadPreference.primaryPreferred(dcTag, envTag);