設定運算子以更新文件中的指定欄位
I.Overview
MongoDB 和 RDBMS 之間的一個顯著區別是 MongoDB 有很多種運算子。其中之一是 update 運算子,用於 update 語句。
II。如果我們不使用更新運算子會發生什麼?
假設我們有一個學生集合來儲存學生資訊(表檢視):
有一天,你得到的工作需要將湯姆的性別從 M
改為 F
。這很簡單,對吧?因此,根據你的 RDBMS 經驗,你可以非常快速地寫下以下宣告:
db.student.update(
{name: 'Tom'}, // query criteria
{sex: 'F'} // update action
);
讓我們看看結果是什麼:
我們失去了湯姆的年齡和名字! 從這個例子中,我們可以知道如果在 update 語句中沒有任何更新運算子,整個文件將被覆蓋。這是 MongoDB 的預設行為。
III。$ set 運算子
如果我們只想更改 Tom 文件中的 sex
欄位,我們可以使用 $set
來指定我們要更新的欄位:
db.student.update(
{name: 'Tom'}, // query criteria
{$set: {sex: 'F'}} // update action
);
$set
的值是一個物件,其欄位代表你要在文件中更新的欄位,這些欄位的值是目標值。
所以,結果現在是正確的:
此外,如果你想同時更改性別和年齡,你可以將它們附加到 $set
:
db.student.update(
{name: 'Tom'}, // query criteria
{$set: {sex: 'F', age: 40}} // update action
);