Причината за периодичните грешки е поради предпочитанията за четене по подразбиране за драйвера, главно по отношение на наборите реплики. Предпочитанието за четене по подразбиране е основно. За всеки от режимите, споменати по-долу, PRIMARY се отнася до главната база данни (винаги най-актуалната), а SECONDARY се отнася до подчинен(ите), които са основно копия на главната база данни и не винаги са актуални.
PRIMARY: The default read mode. Read from primary only. Throw an error if
primary is unavailable. Cannot be combined with tags.
Решението за промяна на предпочитанието за четене на едно от следните:
PRIMARY PREFERRED: Read from primary if available, otherwise a secondary.
SECONDARY PREFERRED: Read from a secondary if available, otherwise read from the primary.
NEAREST: Read from any member node from the set of nodes which respond the fastest.
Примерен код:
// Use this when doing a read if you don't care if the data is always consistent.
// Change the following with secondaryPreferred() if you have high writes, so
// that you don't interfere with them.
ReadPreference preference = ReadPreference.primaryPreferred();
DBCursor cur = new DBCursor(collection, query, null, preference);
За повече информация вижте източника .