Jest kilka punktów dotyczących tego pytania.
-
Nie masz gwarancji spójności odczytu po zapisie, chyba że używasz
"safe=true"
,"w=1"
(lub wyższy) lub"j=true"
z twoim pisaniem. Możesz dołączyć je jako część insert() lubupdate()
poleceń lub użyjset_lasterror_options()
aby ustawić te opcje dla połączenia, bazy danych lub kolekcji, której używasz. -
Jeśli zezwalasz na odczyty z węzłów drugorzędnych (np. ReadPreference innej niż PRIMARY), nie otrzymasz semantyki odczytu po zapisie, a jedynie ostateczną spójność.
-
Jeśli używasz ReadPreference z PRIMARY i ustawiasz odpowiednie opcje lasterror, masz gwarancję uzyskania semantyki odczytu po zapisie dla wszystkich operacji, które używają tego samego gniazda, czyli tego samego wątku.
-
Jeśli używasz wielu wątków i NIE czytasz z węzłów pomocniczych, masz gwarancję uzyskania spójności odczytu po zapisie, o ile wydajesz odczyt w drugim wątku po zakończeniu zapisu w pierwszym wątku. Aby to zapewnić, możesz użyć standardowych prymitywów synchronizacji wątków.