設定運算子以更新文件中的指定欄位

I.Overview

MongoDB 和 RDBMS 之間的一個顯著區別是 MongoDB 有很多種運算子。其中之一是 update 運算子,用於 update 語句。

II。如果我們不使用更新運算子會發生什麼?

假設我們有一個學生集合來儲存學生資訊(表檢視): StackOverflow 文件

有一天,你得到的工作需要將湯姆的性別從 M 改為 F。這很簡單,對吧?因此,根據你的 RDBMS 經驗,你可以非常快速地寫下以下宣告:

db.student.update(
    {name: 'Tom'}, // query criteria
    {sex: 'F'} // update action
);

讓我們看看結果是什麼: StackOverflow 文件

我們失去了湯姆的年齡和名字! 從這個例子中,我們可以知道如果在 update 語句中沒有任何更新運算子,整個文件將被覆蓋。這是 MongoDB 的預設行為。

III。$ set 運算子

如果我們只想更改 Tom 文件中的 sex 欄位,我們可以使用 $set 來指定我們要更新的欄位:

db.student.update(
    {name: 'Tom'}, // query criteria
    {$set: {sex: 'F'}} // update action
);

$set 的值是一個物件,其欄位代表你要在文件中更新的欄位,這些欄位的值是目標值。

所以,結果現在是正確的: StackOverflow 文件

此外,如果你想同時更改性別年齡,你可以將它們附加到 $set

db.student.update(
    {name: 'Tom'}, // query criteria
    {$set: {sex: 'F', age: 40}} // update action
);