帮助中心/最新通知

质量为本、客户为根、勇于拼搏、务实创新

< 返回文章列表

【服务器相关】MongoDB数据更新方法干货篇

发表时间:2025-06-16 03:46:00 小编:主机乐-Yutio

前言

数据更新是我们日常操作数据库必不可少的一部分,下面这篇文章就给大家分享了操作MongoDB数据更新的一些干货,对大家具有一定的参考学习价值,一起来学习学习吧。

常用的函数

  • update(<query>,<update>,<upsert>,<multi>) ,其中<query>表示筛选的条件,<update>是要更新的数据
  • updateMany() 更新所有匹配到的数据

upsert

upsert是一个布尔类型的数据,如果为true时,当根据query条件没有找到匹配的数据时,就表示插入此条数据,如果为false就表示不插入数据

下面将会在一个空的集合中更新数据

字段更新操作符 Field Update Operators

$set

$set用来指定一个键的值。如果这个键不存在,则创建它。注意这里的更新默认是只更新第一条匹配到的数据,如果第一条匹配的数据已经满足修改后的条件,那么将不会执行下面匹配的信息

下面我们将会添加一条信息在数据库中

数组更新操作符 Array Update Operators

只能用在键值为数组的键上的数组操作。
$ (query)

语法: { "<array>.$" : value }

当对数组字段进行更新时,且没有明确指定的元素在数组中的位置,我们使用定位操作符$标识一个元素,数字都是以0开始的。

注意:

  • 定位操作符(“$”)作为第一个匹配查询条件的元素的占位符,也就是在数组中的索引值。
  • 数组字段必须出现查询文档中。

向集合中插入两条数据


db.students.insert({ “_id” : 1, “grades” : [ 78, 88, 88 ] });
db.students.insert({ “_id” : 2, “grades” : [ 88, 90, 92 ] });

执行下列操作


//查询匹配的文档中,数组有2个88,只更新第一个匹配的元素,也就是”grades.1″
db.students.update( { _id: 1, grades: 88 }, { $set: { “grades.$” : 82 } }) ;
//查询文档中没有出现grades字段,查询报错
db.students.update( { _id: 2 }, { $set: { “grades.$” : 82 } } );

$push

如果指定的键已经存在,会向已有的数组末尾加入一个元素,要是没有就会创建一个新的数组。

下面我们将使用$push对该文档添加一条评论信息。


//将会创建一个comments数组,因为一开始这个数组没有存在
db.user.update({name:’chenjiabing’},{$push:{comments:{‘name’:’jack’,’content’:’hello thanks’}}})
//继续添加一条,在comments的末尾进行添加,此时comments变成两条数据了
db.user.update({name:’chenjiabing’},{$push:{comments:{‘name’:’john’,’content’:’hello’}}})

$pull

语法:db.collection.update( { field: <query> }, { $pull: { field: <query> } } );

$pull操作符移除指定字段值为数组,且匹配$pull操作符移除指定字段值为数组,且匹配$pull语句声明的查询条件的所有元素。

执行如下操作


//插入一条文档
db.profiles.insert({ votes: [ 3, 5, 6, 7, 7, 8 ] });
//移除数组中所有元素7
db.profiles.update( { votes: 3 }, { $pull: { votes: 7 } } );
//移除数组中所有大于6的元素
db.profiles.update( { votes: 3 }, { $pull: { votes: { $gt: 6 } } } );
//Result
{ votes: [ 3, 5, 6, 8 ] }
{ votes: [ 3, 5, 6 ] }

总结

本篇文章到此结束,如果您有相关技术方面疑问可以联系我们技术人员远程解决,感谢大家支持本站!


联系我们
返回顶部