この質問にはいくつかのポイントがあります。
-
"safe=true"
のいずれかを使用していない限り、書き込み後の読み取りの一貫性が保証されるわけではありません。 、"w=1"
(またはそれ以上)または"j=true"
あなたの書き込みで。これらは、insert()またはupdate()
の一部として含めることができます。 コマンド、またはset_lasterror_options()
を使用します 使用している接続、データベース、またはコレクションにこれらのオプションを設定します。 -
セカンダリノードからの読み取りを許可している場合(たとえば、PRIMARY以外のReadPreference)、書き込み後の読み取りセマンティクスは取得されず、結果整合性のみが取得されます。
-
PRIMARYのReadPreferenceを使用していて、適切なlasterrorオプションを設定している場合、同じソケット、つまり同じスレッドを使用するすべての操作で、書き込み後の読み取りセマンティクスを取得することが保証されます。
> -
複数のスレッドを使用していて、セカンダリノードから読み取っていない場合は、最初のスレッドで書き込みが完了した後に2番目のスレッドで読み取りを発行する限り、書き込み後の読み取りの一貫性が保証されます。これを保証するために、標準のスレッド同期プリミティブを使用できます。