修改器|学习笔记

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: 快速学习修改器

开发者学堂课程【快速掌握 MongoDB 数据库修改器】学习笔记与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/400/detail/5193


修改器

 

MongoDB 数据库而言,数据的修改会牵扯到内容的变更、结构的变更(包含有数组),所以在进行 MongoDB 设计的时候就提供有一系列的修改器的应用,之前使用的“$set”就是一个修改器。

一共提供了十种修改器,接下来学习各个修改器的含义:

1、$inc:

主要针对于一个数字字段,增加某个数字字段的数据内容;

语法:{ "$inc" :{"成员":内容}}

范例:将所有年龄为19岁的学生成绩一律减少30分,年龄加一岁

db.students.update( { "age" : 19} , {"$inc" : { "score" : -30 , " age" : 1}}) ;

结果:

" id" :objectId("5594ab1eeecd74894d19fff4""),

"name" :“王五”,

"sex" :女",

"age" : 20,

score" : 70,

"address" :“西城区"

"_id": 0bjectId("5594ab1eeecd74894d19fff5""),

"name":"赵六”,

"sex"" :“男",

age” : 20,

"score"" : 100,

"address" :东城区"

可以看到成绩是70的,年龄都改变了,

2、$set:

进行内容的重新设置;·

语法:{"$set": 成员":"新内容"}};

范例:将年龄是20岁的人的成绩修改为89.

db.students.update( { "age" : 20}, {"$set" : {"score" : 89}}) ;

执行成功,只要执行出现了匹配个数和修改个数就表明成功了。

既然能设置内容,那么也能删除内容:

3、$unset:

除某个成员的内容;

语法:"$unset" : 成员":1}}  //1 表示删除的意思

范例:删除“张三”的年龄与成绩信息。

db.students.update( {"name" : "张三"},{"Sunset" : { "age" : 1, "score”: 1}});

结果:

id": objectId( "5594ab1eeecd74894d19fff2""),

name"" : 张三",

"sex” :男,

"address"“海淀区"

id" : ObjectId( 5594ab1eeecd74894d19fff3""),

"name"":“李四”,

""sex" :女”,

age"" : 20,

score" : 59,

address" :“朝阳区"

执行后指定的成员内容就消失了。

4、Spush:

相当于将内容追加到指定的成员之中(基本上是数组);

语法:$ i{"$push" :{成员: value} }.  //value 基本上只能是数组,如果数组不存在再去改变。

范例:向“张三”添加课程信息(此时张三信息下没有course信息)。

db.students.update( {"name": "张三"},{"$push" : {"course" :"语文"“数学”}});

执行:

_id:objectId("5594ab1eeecd74894d19fff2"") ,

"name":张三",

sex:"男"

address":“海淀区",

course”: [

[

语文",

“数学”

]

]

结果成了数组了,也就是说加的内容本身就是追加一个新的字段,新的字段是一个数组,这里有两个中括号,事实上现在的过程确实有数组,但是这个数组里面只能增加一个数据,比如:

范例:向“李四”添加课程信息(此时张三信息下没有course信息)。

db.students.update( {"name": "李四"},{"$push" : {"course" :"语文"}});

写完后在上方查询的地方跟上李四。

执行:

_id”: 0bjectId("5594ab1eeecd74894d19fff3")

"name": 李四”,

"sex"":“女",

age"" : 20,

score:59.

address":朝[阳区",

"course"":【

"语文

]

李四现在没有数据,那么就找一个有数据的:

范例:向“谷大神–E”里面的课程追加一个“美术”,

db.students.update( {"name": "谷大神 -E"}, {"$push" : { "course":"美术"});

$push 就是进行数组数据的添加操作使用的,如果没有数组则进行一个新的数组的创建,如果有则进行内容的追加。

结果:

"_id": objectId("5594b0a3eecd74894d19fffd"") ,

"name"":谷大神-E",

"sex” :“男,

"age" : 20,

score” : r0:.山

address":海淀区”,

"course": [

“语文",

"政治”,

美术”

]

5、$pushAll:

与“$push”是类似的,可以一次追加多个内容到数组里面;

语法:$ {"$pushAl1":{成员:数组内容}}

范例:向“王五”的信息里面添加多个课程内容

db.students.update( { "name" : "王五"}, {"$pushALL" : { "course":["美术","音乐",'素描"}})  //注意大小写

结果:

"_id": 0bjectId("5594ab1eeecd74894d19fff4"") ,

name":“王五”,

"sex"" :“女”,

age"" : 20,

score" : 70,

address"" :西城区,

course"": [

"美术

音乐",

“素描"

]

6、$addToSet:

向数组里面增加一个新的内容,只有这个内容不存在的时候才会增加

语法:"$addToSet":{成员:内容}}}

范例:向王五的信息增加新的内容

db.students.update( { "name" : "王五"}, {"SaddToSet" : { "course": "舞蹈"});

此时会判断要增加的内容在数组里面是否已经存在了,如果不存在则向数组之中追加内容,如果存在,则不做任何的修改操作。

结果:

"_id": objectId("5594ab1eeecd74894d19fff4""),

name":“王五”,

"sex” :"女”,

"age" : 20,

score”: 70,,

"address” :西城区",

"course":【

“美术",

音乐",

素描",[

"美术

"音乐

素描",

”跳舞"

”跳舞"

7、$pop:

删除数组内的数据;“

·语法:{"$pop":{成员:内容}

内容如果设置为-1表示删除第一个

如果是1表示删除最后一个。

范例:删除王五的第一个课程。

db.students.update( { "name": "王五"},{"Spop" : { "course" : -1}});

范例:除王五的最后一个课程

db.students.update( { "name" : "王五"},{"$pop" : { "course" : 1}});

结果:

_id"

: objectId( "5594ab1eeecd74894d1Sfff4"") ,

""name": 王五"”,

sex":“女",

age"" : 20,

"score” :70..

address""_:“西城区”,

"course"":

“音乐",

“素描"";[

:美术",

音乐",

"素描”,

跳舞"

这个过程就相当于数组里删除。

8、$pull:

从数组内删除一个指定内容的数据

·语法:{"$pull":{成员:数据}

进行数据比对的,如果是此数据则删除:

范例:删除王五学生的音乐课程信息

db.students.update( { "name": "王五"},{"Spull" : { "course": "音乐"}});

执行:

"_id" : objectId("5594ab1eeecd74894d19fff4""),

"name":王五”,

"sex” :“女”,

age": 20,

“score” :70,

"address":“西城区”,

"course"" :[

素描"

]

相当于做一个值的判断,如果数组太多删不完:

9、$pullAll:

一次性删除多个内容;“

语法:{"$pull":{成员:[数据,数据,...]}}   //多个数据都用数组表示

范例:删除“谷大神-A”中的三门课程

db.students.update(  "name" : "谷大神 -A"} ,{"$pullAll" : {"course":["语文","数学","英语"]}});

结果:

"_id": objectId("5594b39ceecd74894d19fffe"),

"name":“谷大神- A"",

"sex"":男,

age" : 20,

score"": 70,...

address” :“海淀区”,

"course"" [

“音乐",

"政治"

1o、$rename:

为成员名称电命名;

语法:{"$rename" : {旧的成员名称:新的成员名称};

范例:将“张三”name成员名称修改为“姓名”.

db.students.update( { "name": "张三"}, {"$rename" : { "name": "姓名"}})

在整个 MongoDB 数据库里面,提供的修改器的支持很到位。

结果:

"_id”: 0bjectId( "5594ab1eeecd74894d19fff2""),

"sex"":男",.

"address":“海淀区”,

"course": [

[

"语文",

"数学

]

],.

“姓名”:"张三

强烈建议:MongoDB保存的时候别用内线文档,也别用数组,就保存基本数据就可以。

因为 MongoDB 设计的时候就是按照能独当一面的设计,但在使用时,它只是一个附加的数据库,供数据查询使用。

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
2月前
|
索引
字典的自定义方法是怎么实现的?
字典的自定义方法是怎么实现的?
44 6
|
6月前
|
存储 搜索推荐 Python
【随手记】python语法:类属性和实例属性
【随手记】python语法:类属性和实例属性
72 1
|
5月前
|
C++
C++】string类的使用③(修改器Modifiers)
这篇博客探讨了C++ STL中`string`类的修改器和非成员函数重载。文章介绍了`operator+=`用于在字符串末尾追加内容,并展示了不同重载形式。`append`函数提供了更多追加选项,包括子串、字符数组、单个字符等。`push_back`和`pop_back`分别用于在末尾添加和移除一个字符。`assign`用于替换字符串内容,而`insert`允许在任意位置插入字符串或字符。最后,`erase`函数用于删除字符串中的部分内容。每个函数都配以代码示例和说明。
|
SQL 分布式计算 大数据
无类型转换_列操作 | 学习笔记
快速学习无类型转换_列操作
102 0
无类型转换_列操作 | 学习笔记
|
开发者 Python
列表的浅复制|学习笔记
快速学习列表的浅复制
列表的浅复制|学习笔记
|
开发者 Python
把对象当作字典操作 | 学习笔记
快速学习把对象当作字典操作
把对象当作字典操作 | 学习笔记
|
NoSQL MongoDB 数据库
修改器|学习笔记
快速学习修改器
|
Go 开发者
变量使用细节(1)(二)|学习笔记
快速学习变量使用细节(1)
|
存储 Java Go
变量使用细节(1)(一)|学习笔记
快速学习变量使用细节(1)
|
编译器 Go 开发者
变量使用细节(2)|学习笔记
快速学习变量使用细节(2)