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.