Det finns ett par punkter om denna fråga.
-
Du är inte garanterad att ha läs-efter-skriv-konsistens om du inte använder någon av
"safe=true"
,"w=1"
(eller högre) eller"j=true"
med ditt skrivande. Du kan antingen inkludera dessa som en del av insert() ellerupdate()
kommandon, eller användset_lasterror_options()
för att ställa in dessa alternativ för anslutningen, databasen eller samlingen som du använder. -
Om du tillåter läsningar från sekundära noder, (t.ex. en annan ReadPreference än PRIMÄR), kommer du inte att få läs-efter-skriv-semantik, utan endast eventuell konsistens.
-
Om du använder en ReadPreference av PRIMARY och du ställer in lämpliga lasterror-alternativ, kommer du garanterat att få läs-efter-skriv-semantik på alla operationer som använder samma socket, det vill säga samma tråd.
-
Om du använder flera trådar, och du INTE läser från sekundära noder, kommer du garanterat att få läs-efter-skriv-konsistens så länge du utfärdar läsningen i den andra tråden efter att skrivningen är klar i den första tråden. Du kan använda vanliga trådsynkroniseringsprimitiver för att säkerställa detta.