2012-01-01 70 views

回答

4

MongoDB具有一個全局(每實例)寫入鎖,它將服務器中所有數據的所有更新序列化(儘管分片羣集中的不同服務器將各自擁有自己的獨立鎖)。這意味着在任何特定時刻,只有一個更新發生在任何文檔上,因此對於任何給定的文檔只有一個更新。

findAndModify在這方面與普通的update沒有什麼不同 - 它只是將文檔返回給您。

+0

我認爲將文檔中的明確原子性聲明解釋爲未來語義的保證(與其未來用戶羣的契約)是合理的,同時(傳聞)關於現有更新語義或其他缺少此類承諾的操作的意見作爲質量代碼中不應依賴的實施細節。 – 2012-01-01 11:24:12

+0

我不太確定我的答案的哪一部分 - 如果有的話 - 這是參考。但是原子更新語義對'findAndModify'和普通的'update'均有保證。實現(當前,全局寫鎖)可能會改變,但語義將保持不變。 – dcrosta 2012-01-02 01:06:03