Alasan kesalahan intermiten adalah karena preferensi baca default untuk driver, terutama terkait dengan set replika. Preferensi baca default adalah yang utama. Untuk setiap mode yang disebutkan di bawah, PRIMARY mengacu pada database master (selalu yang paling mutakhir) dan SECONDARY mengacu pada slave, yang pada dasarnya adalah salinan dari master dan tidak selalu up-to-date.
PRIMARY: The default read mode. Read from primary only. Throw an error if
primary is unavailable. Cannot be combined with tags.
Solusi untuk mengubah preferensi baca menjadi salah satu dari berikut ini:
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.
Contoh kode:
// 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);
Untuk info lebih lanjut, lihat sumber .