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:表示降序
posted @ 2021-11-17 18:24  嘛了对就念来过倒  阅读(114)  评论(0编辑  收藏  举报