MongoDB 更新文档
2021/11/17 19:09:57
本文主要是介绍MongoDB 更新文档,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
MongoDB 更新文档
目录- MongoDB 更新文档
- updateOne 函数
- updateMany 函数
- update 函数:更新集合文档
- 更新操作符
- 字段更新操作符
- 数组更新操作符
- 修改器
updateOne 函数
基于过滤器更新集合中的单个文档
db.collection.updateOne( <filter>, <update>, { upsert: <boolean>, arrayFilters: [ <filterdocument1>,...] } )
- filter:文档类型,更新的选择条件,可以使用与 find() 方法中相同的查询操作符。
- update 文档类型,需要更新的内容。使用更新操作符。
注:使用 update 更新文档的时候,如果没有使用更新操作符,那么除了 _id 以外,数据被覆盖
updateMany 函数
基于筛选器更新集合中的多个文档
db.collection.updateMany( <filter>, <update>, { upsert: <boolean>, arrayFilters: [ <filterdocument1>,... ] } )
update 函数:更新集合文档
db.collection.update( <query>, <update>, { upsert: <boolean>, multi: <boolean>, arrayFilters: [ <filterdocument1>,... ] } )
- multi:boolean 类型,默认值为 false,可选的,满足条件则更新一个文档。如果设置为 true,则更新满足查询条件的多个文档。
更新操作符
{ <operator1>:{<field1>:<value1>,...}, <operator2>:{<field1>:<value1>,...}, ... }
字段更新操作符
字段更新操作符 | 说明 |
---|---|
$inc | 将字段的值按指定的量递增。 |
$min | 仅当指定值小于现有字段值时才更新字段。 |
$max | 仅当指定值大于现有字段值时才更新字段。 |
$mul | 将字段的值乘以指定的值 |
$rename | 重命名字段 |
$set | 设置文档中字段的值 |
$unset | 从文档中移除指定的字段 |
注:_id 是不可变的,不能更改。
数组更新操作符
数组更新操作符 | 说明 |
---|---|
$ | 充当占位符,用于更新与查询条件匹配的第一个元素。 |
$[] | 充当占位符,用于更新匹配查询条件的文档数组中的所有元素。 |
$[identifier] | 充当占位符,用于更新与查询条件匹配的文档的arrayFilters条件匹配的所有元素。 |
$addToSet | 只在集合中不存在的情况下向数组中添加元素。 |
$pop | 删除数组的第一项或最后一项。 |
$pull | 删除与指定查询匹配的所有数组元素。 |
$push | 将元素添加到数组中。 |
$pullAll | 从数组中删除所有匹配的值。 |
$addToSet 语法
{ $addToSet: { <field1>: <value1>, ... } }
$pop 语法
{ $pop: { <field>: <-1 | 1>, ... } }
$pop 操作符删除数组的第一个或最后一个元素。向 $pop 传递一个值 -1 来删除数组中的第一个元素,1 来删除数组中的最后一个元素。
$push 语法
{ $push: { <field1>: <value1>, ... } }
$push 可以添加相同的元素
$pull 语法
$pull 操作符从现有数组中删除一个值或匹配指定条件的值的所有实例
{ $pull: { <field1>: <value|condition>,<field2>: <value|condition>, ... } }
$pullAll 语法
{ $pullAll: { <field1>: [ <value1>,<value2> ... ], ... } }
$ 语法
位置 $ 操作符充当与查询文档匹配的第一个元素的占位符,数组字段必须作为查询文档的一部分出现。
{ "<array>.$" : value }
$[] 语法
{ <update operator>: { "<array>.$[]" : value } }
$[identifier] 语法
{ <update operator>: { "array>.$[<identifier>]" : value } },{ arrayFilters: [ { <identifier>:<condition> } ] }
修改器
修改器 | 说明 |
---|---|
$each | 修改 $push 和 $addToSet 操作符,为数组更新添加多个元素。 |
$position | 修改 $push 操作符以指定要添加元素的数组中的位置。 |
$slice | 修改 $push 操作符以限制已更新数组的大小。 |
$sort | 修改 $push 操作符以对存储在数组中的文档重新排序。 |
$ each 语法
{ $addToSet: { <field>: { $each: [<value1>, <value2> ... ] } } }
$position 语法
要使用 $position 修饰符,它必须与 $each 修饰符一起出现。
{$push: {<field>: {$each: [ <value1>, <value2>, ...],$position: <num>}}}
$slice 语法
要使用 $slice 修饰符,它必须与 $each 修饰符一起出现。您可以向 $each 修饰符传递一个空数组[ ],这样只有 $slice 修饰符具有效果。
{$push: {<field>: {$each: [ <value1>,],$slice: <num>}}}
- 0:将数组更新为空数组
- 负数:更新数组,使其只包含最后num个元素
- 正数:更新数组时,只包含前面num个元素
$sort 语法
要使用 $sort 修饰符,它必须与 $each 修饰符一起出现。您可以向 $each 修饰符传递一个空数组[],这样只有 $sort 修饰符具有效果。
{$push: {<field>: {$each: [ <value1>,<value2>,...],$sort: <sort specification>}}}
- 1:表示升序
- -1:表示降序
这篇关于MongoDB 更新文档的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-24MongoDB资料:新手入门完全指南
- 2024-12-20go-zero 框架的 RPC 服务 启动start和停止 底层是怎么实现的?-icode9专业技术文章分享
- 2024-12-19Go-Zero 框架的 RPC 服务启动和停止的基本机制和过程是怎么实现的?-icode9专业技术文章分享
- 2024-12-18怎么在golang中使用gRPC测试mock数据?-icode9专业技术文章分享
- 2024-12-15掌握PageRank算法核心!你离Google优化高手只差一步!
- 2024-12-15GORM 中的标签 gorm:"index"是什么?-icode9专业技术文章分享
- 2024-12-11怎么在 Go 语言中获取 Open vSwitch (OVS) 的桥接信息(Bridge)?-icode9专业技术文章分享
- 2024-12-11怎么用Go 语言的库来与 Open vSwitch 进行交互?-icode9专业技术文章分享
- 2024-12-11怎么在 go-zero 项目中发送阿里云短信?-icode9专业技术文章分享
- 2024-12-11怎么使用阿里云 Go SDK (alibaba-cloud-sdk-go) 发送短信?-icode9专业技术文章分享