Há alguns pontos sobre esta questão.
-
Não há garantia de consistência de leitura após gravação, a menos que esteja usando"safe=true"
,"w=1"
(ou superior) ou"j=true"
com sua escrita. Você pode incluí-los como parte do insert() ouupdate()
comandos, ou então useset_lasterror_options()
para definir essas opções para a conexão, banco de dados ou coleção que você está usando.
-
Se você estiver permitindo leituras de nós secundários (por exemplo, um ReadPreference diferente de PRIMARY), você não obterá semântica de leitura após gravação, mas apenas consistência eventual.
-
Se você estiver usando um ReadPreference de PRIMARY e estiver definindo as opções apropriadas de lasterror, é garantido que você obterá semântica de leitura após gravação em todas as operações que usam o mesmo soquete, ou seja, o mesmo thread.
-
Se você estiver usando vários encadeamentos e NÃO estiver lendo de nós secundários, é garantido que você obterá consistência de leitura após gravação, desde que emita a leitura no segundo encadeamento após a conclusão da gravação no primeiro encadeamento. Você pode usar primitivas de sincronização de encadeamento padrão para garantir isso.