设置运算符以更新文档中的指定字段
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
);