upsert=true
で更新 アトミックな「挿入または更新」を実行するために使用できます( http://docs.mongodb.org/manual/core/update/#update-operations-with-the-upsert-flag
。
たとえば、特定のurl
を持つFrontコレクションのドキュメントを確認したい場合 が1回だけ挿入されると、次のように実行できます:
db.Front.update(
{url: 'http://example.com'},
{$set: {
url: 'http://example.com'},
found: true
}
)
MongoDB内の単一のドキュメントに対する操作は、常にアトミックです。複数のドキュメントにまたがる更新を行う場合、アトミック性は保証されません。そのような場合、あなたは自分自身に尋ねることができます:私は本当に操作がアトミックである必要がありますか?答えが「いいえ」の場合は、一貫性のない可能性のあるデータを処理する方法が見つかる可能性があります。答えが「はい」で、MongoDBを使い続けたい場合は、2フェーズコミット 。