今天我来谈一下MongoDB的基本操作命令和与关系型数据库mysql的对比。
(1)使用mysql数据库显示已经存在的数据库,使用命令show databases,截图如下:
使用MongoDB显示已经存在的数据库,使用命令show dbs,截图如下:
对比:我感觉这两种数据库在显示数据库这边没有什么区别。
(2)mysql建库之后,并且还要use 数据库名,截图如下:
MongoDB建库之后,不需要use,直接use 库名,之前如果建好的话直接用就行了,没有的话,那就新建一个,截图入下:
对比:在建数据库方面,MongoDB确实比mysql方便的多,但是MongoDB在首次的用时候确实难以适应,不过用惯了就好了。
(3)删除数据库命令,两种差不多。在mysql中删除数据库用命令drop database 数据库名,截图如下:
而在MongoDB中,在删除数据库之前,必须使用use 数据库名,然后再使用命令db.dropDatabase,截图如下:
对比:in a word,MongoDB在删除数据库时比mysql要繁琐,mysql一条命令就好,Mongo在删除数据库之前,必须要use一下所要删除的数据库,否则他删除的是正在使用的数据库。
(4)建表。在mysql里面建表就一条命令,截图如下:
而在MongoDB中,没有表的概念,但有集合,在MongoDB里面创建集合有两种方式,一种是隐式创建,它是在创建集合的同时往集合里面添加 数据,截图如下:
还有一种时显式创建,用到的命令是db.createCollections(),截图如下:
对比:首先我先来说一下MongoDB的这两种创建集合的方式,第一种隐式创建方式用的频率会比较高一点。就两种数据库来说,关系型数据库对表的结构会比较苛刻一点,而非关系型数据库则使用key-value的方式来创建,所以会比较任性一点。
(5)显示一个数据库中存在的表(集合)。在mysql数据库中使用命令:show table,截图如下:
在MongoDB数据库中使用show collections(),截图如下:
对比:我自我感觉这两种命令都差不多。
(6)在数据库中插入数据。在mysql中插入一条数据,截图如下:
在MongoDB里面插入数据,截图如下:
而且MongoDB还支持js脚本,可以在终端里面使用js脚本大批量的插入数据,截图如下:
对比:两种数据库,通过插入操作更能把MongoDB的key-value特性显示出来。
(7)显示数据库中表(集合)中的数据记录。mysql数据库中查看数据使用命令select * from 表名,截图如下:
MongoDB数据库中查看数据使用命令db.集合名字.find(),截图如下:
MongoDB数据库中查看数据条数使用命令db.集合名字.find().count(),截图如下:
对比:我感觉这两个差不多。
(8)删除数据。在mysql中删除数据使用命令(delete from 表名)是删除整张表的记录。delete from 表名 where id=?是删除特定的记录,截图如下:
在MongoDB数据库里面,删除记录使用命令:db.集合名.remove({条件}),截图如下:
对比:mysql是通过主键来进行删除的。MongoDB是通过条件来删除的。
(9)接下来就是查询了。在mysql数据库一般都是通过逐渐来查询的(当然没有定义主键的话,会自动生成一个6字节的ROWID),截图如下:
在MongoDB里面进行查询,使用命令:db.集合名.find({条件}),截图如下:
当然天剑如果哦更多的话,匹配度会更大,查询速度回更快,截图如下:
对比:MongoDB的查询有点像mysql里面的非索引查询,我感觉这样的查询效率会有点底,但是MongoDB里面是有索引的。
(10)最后一个就是数据的修改更新了。在mysql数据库里面是通过id找到所在的那一条数据,然后在更改,截图如下:
在MongoDB数据库里面修改更新是这样的,我先重新建一个集合,以便于更新效果的查看,截图如下:
然后我们在开始修改操作,先来示范一个错误的操作db.集合名.update({查询条件},{更改的东西}),结果你就会发现,截图如下:
你会发现第一条记录和第二条记录age是一样的,但是为什么只改了第一条数据的,其实正确的命令应该是这样的db.集合名.update({查询条件},{$set:{更改的东西}},1,1),我在这里解释一下,最后一个1是因为最后一个是从0开始的,要更改两个,所以写成1,截图如下:
但是如果你更改的时候条件没有,MongoDB又会自动的添加一条记录,截图如下:
可以看出原先没有age=40这条记录,所以更改之后,会自动的添加到总记录里面。
对比:MongoDB数据库的更改条件比mysql的苛刻,要求的多。说实话,我有点不太习惯。