整理這些技術筆記真的很花時間,如果你願意 關閉 Adblock 支持我,我會把這份感謝轉換成更多「踩坑轉避坑」的內容給你!ヽ(・∀・)ノ
(20)被迫吃芒果的前端工程師 - MongoDB - Update Operators
前言
寫了很多 Mongoose 之後我才想到我似乎少寫了 MongoDB 中的 Update Operators 的部分,而 Update Operators 這一部分其實也很重要,所以就來補一篇 Update Operators 的 MongoDB 章節。
Update Operators
Update Operators 是 MongoDB 所提供的一些方法,方便你做一些計算或重新命名等,但是在開始之前我想特別說明一件事情,前面章節中的練習我們可以發現 Mongoose 中也可以撰寫一些在 MongoDB 章節的語法,因此有些 MongoDB 語法我們也會直接在 Mongoose 使用。
那麼回歸到 Update Operators 的部分,假設我們今天使用者每一次執行某個功能時,它的年齡會被增加 1 歲你可以是想你會怎麼寫 Mongoose 這一段,或許你會這樣撰寫
1 | |
提醒一下,我們這邊 mike 儲存時的資料是以下
1 | |
那麼如果你是 age: 1 的話,其實會直接被更新成 1 歲

因此如果要達到年齡增加一歲也就是 20 歲變成 21 歲,那就要使用 MongoDB 中的 Update Operators,以官方文件來講加法就是 $inc,而使用方法如下
1 | |
而 $inc 的意思就是針對特定字段,也就是 age 增加多少,例如我寫 1 就代表著 +1

而這個技巧非常適合用於部落格文章的閱讀數量計算,例如當使用者取得某一篇文章時,就增加 postCount 一次這樣。
但這邊如果你有翻 Update Operators 文件的話,你會發現沒有減少的語法,因此如果你是要每次執行就減少 1 歲的話,則直接使用 - 就可以了
1 | |
因此 $inc 會隨著你傳入的值是正數還是負數來決定是否減少與增加。
最後你會發現 Mongoose 中好像很長會混搭著 MongoDB 的語法,所以你可以把 Mongoose 理解成擴充版本的 MongoDB,Mongoose 針對 MongoDB 一些缺少的地方在做一些擴充強化,因此 MongoDB 語法會放在前面就是這樣子,因為非常重要。
參考文獻
整理這些技術筆記真的很花時間,如果你願意 關閉 Adblock 支持我,我會把這份感謝轉換成更多「踩坑轉避坑」的內容給你!ヽ(・∀・)ノ