ドキュメントを挿入/更新/削除するときに、MongoDB がデフォルトで非同期書き込みを使用することを知っています。私の質問は、これらの更新がまだ順番に実行されているかどうかです。
次の upsert-query の後に delete-query があるとします。
db.servers.update({ "server": "abcdef" }, { "$set": { "lastSeen": new Date()}}, /*upsert=*/ true);
db.servers.update({ "server": "uvwxyz" }, { "$set": { "lastSeen": new Date()}}, /*upsert=*/ true);
db.servers.remove({ "lastSeen": { "$lt": new Date(Date.now() - 3600000) } });
これらのコマンドがこれらの順序で実行される場合、(操作が成功した場合) 最初に 2 つのドキュメントが挿入/更新され、次に削除操作によって古いドキュメントが削除されることが保証されますか? 「lastSeen」値が更新されたため、挿入/削除されたドキュメントの両方が削除されないようにしたい。
「非同期書き込み」は、データがRAMからディスクに書き込まれる時間にのみ関係していると思います。上記の例が常に機能するように (更新が成功した場合)、コマンドの順序には影響しないと思いますよね?
編集: 単一の mongod インスタンスを使用します。レプリカセットなし、シャーディングなし:-)