加入收藏 | 设为首页 | 会员中心 | 我要投稿 江门站长网 (https://www.0750zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 系统 > 正文

mongodb字段和数组更新数据介绍

发布时间:2023-12-28 19:06:56 所属栏目:系统 来源:DaWei
导读: 更新数据操作是数据库的日常操作,那么mongodb更新数据的方法有哪些呢?下面就给大家分享关于mongodb更新数据的方法,有字段更新,数组更新等等方法,接下来跟随小编一起看看吧。

数据更
更新数据操作是数据库的日常操作,那么mongodb更新数据的方法有哪些呢?下面就给大家分享关于mongodb更新数据的方法,有字段更新,数组更新等等方法,接下来跟随小编一起看看吧。

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

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

upsert
upsert是一个布尔类型的数据,如果为true时,当根据query条件没有找到匹配的数据时,就表示插入此条数据,如果为false就表示不插入数据
下面将会在一个空的集合中更新数据

//就会插入此条数据,因为没有找到匹配的信息
db.user.update({'name':'chenjiabing','age':22,'sex':"Man"},{$set:{'hobby':'read'}},{'upsert':true}); 
db.user.update({'name':'chenjiabing','age':22,'sex':"Man"},{$set:{'hobby':'read'}},true); //和上面的语句等价
//输出 db.user.find()
{ "_id" : ObjectId("59067b70856d5893a687655f"), "age" : 22, "name" : "chenjiabing", "sex" : "Man", "hobby" : "read" }

multi
如果这个参数为true,就把按条件查出来多条记录全部更新。默认为false,如果为true的话和updateMany()一样的效果
下面将会更新所有匹配到的数据
db.user.update({name:'chenjiabing'},{$set:{'hobby':'code'}},{'multi':true});

字段更新操作符 Field Update Operators
从文档中移除指定的键
下面将要删除上面插入的hobby键
db.user.update({name:'jack'},{$unset:{'hobby':1}}) //这里的值是任意给的,随便什么值

$inc
$inc修改器用来增加已有键的值,或者在键不存在时创建一个键$inc就是专门来增加(和减少)数字的。$inc只能用于整数、长整数或双精度浮点数。要是用在其他类型的数据上就会导致操作失败
db.user.update({name:'jack'},{$inc:{'pageViews':1}}); //起初没有就会自动创建一个键

下面演示增加和减少
db.user.update({name:'jack'},{$inc:{'pageViews':100}}) ; //这里是在上面的基础上加上100,此时变成了101
db.user.update({name:'jack'},{$inc:{"pageViews":-100}}) ; //这里是在上面的基础上减去100,此时还是变成了1

$rename操作符也可以将子文档中键值移到其他子文档中
db.user.update({name:'chenjiabing'},{$rename:{'school.name':'contact.name'}});
// 这里将会将school.name这个字段的值移到contact.name之中,如果contact不存在,那么就会创建一个
//输出
{ "_id" : ObjectId("590674ce30b9f88dd43d7ee4"), "name" : "chenjiabing", "age" : "Man",
 "school" : { "city" : "beijing" }, "contact" : { "name" : "jsnu" } }
数组更新操作符 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 } } );

以上就是关于mongodb更新数据多的方法介绍,上述示例有一定的借鉴价值,有需要的朋友可以参考学习,希望本文对大家有帮助。

(编辑:江门站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章