Има няколко точки относно този въпрос.
-
Не е гарантирано, че имате последователност при четене след запис, освен ако не използвате
"safe=true"
,"w=1"
(или по-голям) или"j=true"
с твоето писане. Можете да ги включите като част от insert() илиupdate()
команди или в противен случай използвайтеset_lasterror_options()
за да зададете тези опции за връзката, базата данни или колекцията, които използвате. -
Ако разрешавате четене от вторични възли (напр. ReadPreference, различно от PRIMARY), тогава няма да получите семантика за четене след запис, а само евентуална последователност.
-
Ако използвате ReadPreference на PRIMARY и задавате подходящите опции за lasterror, тогава гарантирано ще получите семантика за четене след запис за всички операции, които използват един и същ сокет, тоест една и съща нишка.
-
Ако използвате множество нишки и НЕ четете от вторични възли, тогава гарантирано ще получите последователност на четене след запис, стига да подадете четенето във втората нишка, след като записът завърши в първата нишка. Можете да използвате стандартни примитиви за синхронизиране на нишки, за да гарантирате това.