MongoDB学习笔记

来源:互联网 发布:eureka api java 编辑:程序博客网 时间:2024/06/07 22:07

 这篇博客主要是记录自己对mongodb的学习,毕竟mongodb被使用的并不多,免得当不用mongodb后,对mongodb忘记的一干二净。

 一.mongodb的基本介绍

mongodb是一种NOSQL数据库,和mysql这样的数据库最大的不同就是它扩展很灵活,没有数据列的限制,不用像mysql那样如果要新增一个字段就需要改表结构,所以增加字段很方便,而且列字段的长度也不用设置。但mongodb也没有关系型数据库其他的功能,例如多行事物和联合查询(join)

mongodb和mysql的结构对比

mongodbmysql数据库数据库集合表文本行

文本中存储的是一个个的键值对,例如

{"key":1000,"name":"张三","age":24}

mongodb的数据类型有九种
1.null,代表空值或不存在的值。
2.字符串。
3.数值,能表示整数和浮点型。
4.布尔类型,true或false。
5.数组,{"a":[1,2,3]}。
6.日期:{"time":new Date()}。

7.内嵌文档,例如{"a":{"b":"c"}}。

8.ObjectId,12个字节的id,是文档唯一标示,每新增一个文档,mongodb都会自动给这个文档创建一个ObjectId对象。

9.正则表达式。

二.mongodb增删改查

这里我没有用windows上的cmd来演示,而是用mongodb的可视化工具Robo 3T来演示。

1.查询和创建数据库

show dbs
显示当前连接下有多少数据库



如果monday数据已经存在,那么就选中monday数据库,如果monday不存在,那就创建monday数据库,例如下图就创建了monday数据库,

但是如果数据库monday里面没有任何数据,这时运行show dbs,在显示结果里是没有monday的。

use monday


在数据库下面创建集合,也就是表。

db.createCollection("use")


显示当前数据库中的集合

show collections

删除use集合

db.use.drop()


删除当前数据库

db.dropDatabase()

2.新增数据

新增关键字insert,新增的文档要用花括号括起来,键值对之间用逗号隔开,value值如果是字符串型得用双引号,key值可加可不加双引号。

db.use.insert({"name":"素还真","age":"26","type":"军师","address":"苦境"})



批量新增数据

db.use.insertMany([{"name":"一页书","age":32,"type":"战士","address":"苦境"},{"name":"倦收天","age":28,"type":"战士","address":"道境"}])

批量插入,注意,一定要有中括号,两个文档之间用逗号隔开。



3.查询数据

mongodb查询数据的关键字是find。

find()会查询出所有的文档,当文档数大于20的时候,就只显示20条
db.use.find()


带有条件的查询语句,如果带有多个条件,条件之间用逗号隔开
db.use.find({"name":"素还真","age":"26"})

一些特殊条件的查询
比较操作符:$gt,$gte,$lt,$lte分别表示>,>=,<,<=
查询age大于27的
db.use.find({"age":{$gt:27}})


or,in,nin的使用
db.use.find({"address":{$in:["苦境","魔界"]}})


db.use.find({$or:[{"address":"苦境"},{"name":"倦收天"}]})


mongodb模糊查询的关键字是regex
select * from student where name like ’%joe%’
上面的查询语句相当于
db.student.find({name:{$regex:/joe/}})


limit(),skip(),sort()函数
limit的作用是限制显示查询出数据的条数,例如limit(20),就是显示查询出的前20条,当查询出来的数据小于20的时候,全部显示
db.use.find().limit(2)


skip()函数是忽略查询的前多少条数据,而显示后面的数据,例如skip(3)表示忽略前面的三条数据,而从第四条开始显示
db.use.find().skip(1)


sort()函数作用是排序,sort(key:value),其中key是要排序的健值,value为1或-1,1代表升序,-1代表降序,例如sort("age":1)表示对查询出的文档按age升序显示
db.use.find().sort({"age":1})


3.mongodb的修改操作

mongodb修改操作的关键字是update,update的操作以下面的例子来说明
db.use.update({"age":{$gt:18}},{$set:{"address":"妖界"}},true,true)
第一个参数表示更新的查询条件,{"age":{$gt:18}}表示更新age大于18的文档
第二个参数表示要更改的数据,{$set{"address":"妖界"}}表示要将address对应的值替换成"妖界"
第三个参数为true表示当查询条件查到了文档,就更新文档,当没有查到文档,就新增要更新的数据。
第四个参数表示当查询条件找出多条的时候,true表示这多条数据都更新,false表示只更新一条数据。
db.use.update({"age":26},{$set:{"name":"素还真","address":"苦境","type":"智慧"}})

$set更新的时候,如果其中的key值,在文档中没有,就会将这个key插入到文档中


当第三个参数是true的时候,如果第一个条件在集合没有查找到对应的文档,那么就会将$set里面的值作为一个新的文档插入到集合中

当第四个参数为tru的时候,会更新所有满足第一个条件查询出来的文档,如果第四个参数是false,会更新第一个条件查询出的第一个文档,
下面的更新语句就一下更新了两条


4.mongodb的删除操作

mongodb的删除操作关键字有两个remove和drop
remove只会删除集合中的文档,而不会删除集合以及集合里面的索引
drop会将集合删除,所以集合里的数据和索引都会删除


使用drop试试看,会将集合use删除调


以上是我学习mongodb的一篇记录博客,很浅显,这篇博客只为记录,当自己以后要用到mongodb的时候,回过头查看此博客的时候能更容易想起来

原创粉丝点击