Anledningen till de intermittenta felen är på grund av standardinställningarna för läs för drivrutinen, främst när det gäller replikuppsättningar. Standardinställningen för läs är primär. För vart och ett av de lägen som nämns nedan hänvisar PRIMÄR till huvuddatabasen (alltid den mest uppdaterade) och SEKUNDÄR hänvisar till slav(ar), som i princip är kopiorna av master och inte alltid uppdaterade.
PRIMARY: The default read mode. Read from primary only. Throw an error if
primary is unavailable. Cannot be combined with tags.
Lösningen för att ändra läspreferensen till något av följande:
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.
Exempelkod:
// 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);
För mer information, se källan .