前言
数据更新是我们日常操作数据库必不可少的一部分,下面这篇文章就给大家分享了操作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 ] }
本篇文章到此结束,如果您有相关技术方面疑问可以联系我们技术人员远程解决,感谢大家支持本站!