與關系數據庫一樣,MongoDB也是通過鎖機制來保證數據的完整性和一致性,MongoDB利用讀寫鎖來支持並發操作,讀鎖可以共享寫鎖具有排他性。當一個讀鎖存在時,其他讀操作也可以用這個讀鎖;但當一個寫鎖存在時,其他任何讀寫操作都不能共享這把鎖,當一個讀和寫都等待一個鎖時,MongoDB將優先分配鎖給寫操作。
從版本2.2開始,MongoDB在每一個數據庫上實現鎖的粒度,當然對於某些極少數的操作,在實例上面的全局鎖依然存在,鎖粒度的降低能夠提高系統的並發性。成熟的關系數據庫鎖的粒度更低,它可以在表中的某一行上,即"行級鎖"。常見的操作和產生的鎖類型如下:
查詢產生讀鎖,增刪改產生寫鎖,默認情況下在前台創建索引會產生寫鎖。聚集aggregate操作產生讀鎖等。