bulkWrite探祕

MongoDB有很多有趣的內置方法,其中爲了批量處理一些寫入操作,並且可以按照一定順序執行,自從3.2版本之後提供了該批量方法:bulkWrite。

它的語法很簡單:


db.collection.bulkWrite(
   [ <operation 1>, <operation 2>, ... ],
   {
      writeConcern : <document>,
      ordered : <boolean>
   }
)

分別解釋一下上述參數,
opertion 1, opertion 2:表示寫入操作對象,例如插入數據的操作:

{ insertOne: { document: { _id: 3, type: "spider", size: "medium", price: 6 } } },

writeConcern:它表示寫入設置,當有多個MongoDB節點(比如三個節點,其中一個primary節點)的時候,我們會定義什麼纔算是寫入成功。從5.0版本之後,默認是{w: ‘majority’},也就是當大多數節點寫入完成,則會返回寫入結果。比如有三個節點,那麼超過一半,也就是2個或者2個以上節點寫入成功,則該寫入操作才能算成功。

ordered:這個參數爲true的時候代表這些寫入操作是嚴格按照順序串行執行的,也就是先執行operation 1,然後執行operation 2。並且在這個過程中如果有一個操作發生錯誤,則MongoDB返回結果並不執行剩餘的寫操作。

當odererd是false,代表這些寫操作可以無序地併發執行,當有一個寫操作發生錯誤,則MongoDB會繼續執行完其他操作,最後返回錯誤和異常。

所以可以看出有序方式bulkWrite會比無序方式更慢。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章