MongoDB - 字段更新操作符
MongoDB 提供了不同类型的字段更新运算符来更新符合指定条件的文档字段的值。下表包含字段更新运算符:
Operator | Description |
---|---|
$currentDate | This operator is used to set the value of a field to current date, either as a Date or a Timestamp. |
$inc | This operator is used to increment the value of the field by the specified amount. |
$min | This operator is used only to update the field if the specified value is less than the existing field value |
$max | This operator is used only to update the field if the specified value is greater than the existing field value. |
$mul | This operator is used to multiply the value of the field by the specified amount. |
$rename | This operator is used to rename a field. |
$setOnInsert | This 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. |
在以下示例中,我们正在使用:
Database: GeeksforGeeks
Collection: Employee
Document: two documents that contain the details of the employees in the form of field-value pairs.
使用$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})