花了六天講解Index之後,不曉得大家對建立索引是否有一些概念,至少知到如何建立索引吧?
至於索引的優化個人覺得需要一點時間,去觀察資料庫使用的狀況,如果發現有哪個collection的搜尋特別慢,代表可能需要加上索引,或是原本的索引已經不適合現在的搜尋方式,需要做修正。
今天是講解MongoDB技術文章的最後一天,輕鬆一點只介紹bulkWrite的用法,這個方法可以讓我們一次寫入多個不同的資料操作,操作的種類有以下這些。
- insertOne:新增一筆資料
- updateOne:更新一筆資料
- updateMany:更新多筆資料
- replaceOne:取代一筆資料
- deleteOne:刪除一筆資料
- deleteMany:刪除多筆資料
假設我們目前資料庫,有以下這些商品資料
基本上bulkWrite寫法和aggregate很像,都是在陣列內寫入要執行的操作,而insertOne就和$match類似,代表要執行的操作,後面寫入要操作的資料。如果我們要新增一筆商品資料,可以這樣寫。
如果我們想要更新商品資料,可以使用updateOne,它只會更新符合filter條件的第一筆資料,但如果使用的是updateMany則是符合條件的所有資料,都會進行更新。
與updateOne不同的是,replaceOne會直接將整筆資料替換掉,所以要替換的資料一定要寫完整,如果像下面的範例只寫{ price: 3000 },會導致寫入不完整的資料,進入資料庫內。
replaceOne還可以透過設定upsert: true,當無法搜尋到符合條件的資料,並且取代,這時候會自動插入一筆資料進入collection,預設是upsert: false。
如果我們想要刪除資料可以使用deleteOne或deleteMany,差別一樣是deleteOne只會刪除符合filter條件的第一筆資料,而deleteMany則是刪除符合條件的所有資料。