update()方法更新MongoDB集合中现有文档中的值。更新文档时, _id字段的值保持不变。默认情况下, db.collection.update()方法更新单个文档。包括选项multi:true以更新与给定查询匹配的所有文档。此方法可用于文档的单个更新以及多个文档。
语法如下:
db.COLLECTION_NAME.update({SELECTION_CRITERIA}, {$set:{UPDATED_DATA}}, {
upsert: <boolean>, multi: <boolean>, writeConcern: <document>, collation: <document>, arrayFilters: [ <filterdocument1>, ... ], hint: <document|string>
})
参数:
- 第一个参数是"文档"形式的"较旧"值。文档是由文件和值对创建的结构, 类似于JSON对象。
- 第二个参数必须包含一个$ set关键字以更新以下指定的文档值。
- 第三个参数是可选的。
可选参数:
- Upsert:此参数的默认值为false。如果为true, 则当update方法中没有文档与给定条件匹配时, 它将在集合中创建一个新文档。
- 多:此参数的默认值为false。如果为true, 则更新方法将更新所有符合查询条件的文档。否则, 它将仅更新一个文档。
- writeConcern:仅当你不想使用默认写关注点时才使用它。此参数的类型是文档。
- 排序规则:它指定使用归类进行操作。它允许用户为字符串比较指定特定于语言的规则, 例如字母大写和重音符号规则。此参数的类型是文档。
- arrayFilters:它是过滤器文档的数组, 指示要针对数组字段上的更新操作修改哪些数组元素。此参数的类型是数组。
- 暗示:它是一个文档或字段, 用于指定用于支持过滤器的索引。它可以使用索引规范文档或索引名称字符串, 并且如果你指定不存在的索引, 则它将给出错误。
例子:
在以下示例中, 我们正在使用:
数据库:gfg收藏:学生文档:三个文档包含学生的姓名和年龄
- 将其名称关键字具有avi值的文档更新为hello world。
db.student.update({name:"avi"}, {$set:{name:"helloword"}})
在此, 第一个参数是要更改其值的文档{name:" avi"}, 第二个参数是set关键字意味着用旧的键值设置(更新)以下匹配的键值。
注意:键的值必须与集合中定义的数据类型相同。
- 将名称为prachi的文档的年龄更新为20。
db.student.update({name:"prachi"}, {$set:{age:20}}
在此, 第一个参数是要更改其值的文档{name:" prachi"}, 第二个参数是set关键字意味着将age字段的值设置(更新)为20。