ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MongoDB 更新文档

2021-11-17 18:32:16  阅读:132  来源: 互联网

标签:... MongoDB 修饰符 更新 操作符 数组 文档


MongoDB 更新文档

目录

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,修饰符,更新,操作符,数组,文档
来源: https://www.cnblogs.com/zkatr/p/15568647.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有