📜  MongoDB - 字段更新操作符

📅  最后修改于: 2022-05-13 01:56:58.415000             🧑  作者: Mango

MongoDB - 字段更新操作符

MongoDB 提供了不同类型的字段更新运算符来更新符合指定条件的文档字段的值。下表包含字段更新运算符:

OperatorDescription
$currentDateThis operator is used to set the value of a field to current date, either as a Date or a Timestamp.
$incThis operator is used to increment the value of the field by the specified amount.
$minThis operator is used only to update the field if the specified value is less than the existing field value
$maxThis operator is used only to update the field if the specified value is greater than the existing field value.
$mulThis operator is used to multiply the value of the field by the specified amount.
$renameThis operator is used to rename a field.
$setOnInsertThis operator is used to set the value of a field if an update results in an insert of a document. It has no effect on update operations that modify existing documents.

在以下示例中,我们正在使用:

使用$currentDate运算符更新日期字段的值:

在示例中,我们正在更新名字为 Om 的员工文档的 joinDate 字段的值。



db.Employee.updateOne({"name.first": "Om"}, 
                      {$currentDate: {joiningDate: true}})

使用$inc运算符增加字段的值:

在此示例中,我们正在更新名为 Sumit 的员工文档的工资字段。

db.Employee.update({"name.first": "Sumit"}, 
                   {$inc: {"personalDetails.salary": 3000}})

使用$max运算符比较值(或数字):

在本例中,我们将薪水字段的值(或数字)与指定值(即 40000)进行比较。这里,指定值大于当前值。因此, $max运算符在 update() 方法的帮助下将工资字段的值更新为 40000。

db.Employee.update({"name.first": "Sumit"}, 
                   {$max: {"personalDetails.salary": 40000}})

使用$min运算符比较值(或数字):

在本例中,我们将工资字段的值(或数字)与指定值(即 5000)进行比较。这里,指定值小于当前值。所以。 $min运算符在 update() 方法的帮助下将工资字段的值更新为 5000。

db.Employee.update({"name.first": "Sumit"}, 
                   {$min: {"personalDetails.salary": 5000}})

使用$mul运算符乘以字段的值:

在这个例子中,我们将匹配指定条件的文档中的salary 字段的值乘以2,即name = Sumit。

db.Employee.update({"name.first": "Sumit"}, 
                   {$mul: {"personalDetails.salary": 2}})

使用$rename运算符重命名字段:

在此示例中,我们将 ExperienceYear 字段的名称重命名为名字为 Om 的员工文档中的 Experience。

db.Employee.update({"name.first": "Om"}, 
                   {$rename: {"department": "unit"}})

使用$setOnInsert在新文档中插入新字段:

在这个例子中,我们在 update() 方法的帮助下在 Employee 集合中创建新文档,方法是将 upsert 字段的值设置为 true 并使用 $setOneInsert运算符将值分配给文档中的部门和工资字段。

db.Example.update({name: {first: "Mona", last: "Singh"}, 
                    personalDetails: {age: 24, contactInfo: 4578934201}}, 
                  {$setOnInsert: {department: "HR", salary: 30000}},
                  {upsert: true})