今天我来谈一下MongoDB的基本操作命令和与关系型数据库mysql的对比。

(1)使用mysql数据库显示已经存在的数据库,使用命令show databases,截图如下:

mysql对比主库从库数据 数据库对比教程_mysql对比主库从库数据

使用MongoDB显示已经存在的数据库,使用命令show dbs,截图如下:

mysql对比主库从库数据 数据库对比教程_mysql对比主库从库数据_02

对比:我感觉这两种数据库在显示数据库这边没有什么区别。

(2)mysql建库之后,并且还要use 数据库名,截图如下:

mysql对比主库从库数据 数据库对比教程_javascript_03

MongoDB建库之后,不需要use,直接use 库名,之前如果建好的话直接用就行了,没有的话,那就新建一个,截图入下:

mysql对比主库从库数据 数据库对比教程_脚本_04

对比:在建数据库方面,MongoDB确实比mysql方便的多,但是MongoDB在首次的用时候确实难以适应,不过用惯了就好了。

(3)删除数据库命令,两种差不多。在mysql中删除数据库用命令drop database 数据库名,截图如下:

mysql对比主库从库数据 数据库对比教程_mongodb_05

而在MongoDB中,在删除数据库之前,必须使用use 数据库名,然后再使用命令db.dropDatabase,截图如下:

mysql对比主库从库数据 数据库对比教程_脚本_06

对比:in a word,MongoDB在删除数据库时比mysql要繁琐,mysql一条命令就好,Mongo在删除数据库之前,必须要use一下所要删除的数据库,否则他删除的是正在使用的数据库。

(4)建表。在mysql里面建表就一条命令,截图如下:

mysql对比主库从库数据 数据库对比教程_mysql对比主库从库数据_07

而在MongoDB中,没有表的概念,但有集合,在MongoDB里面创建集合有两种方式,一种是隐式创建,它是在创建集合的同时往集合里面添加 数据,截图如下:

mysql对比主库从库数据 数据库对比教程_脚本_08

还有一种时显式创建,用到的命令是db.createCollections(),截图如下:

mysql对比主库从库数据 数据库对比教程_mysql对比主库从库数据_09

对比:首先我先来说一下MongoDB的这两种创建集合的方式,第一种隐式创建方式用的频率会比较高一点。就两种数据库来说,关系型数据库对表的结构会比较苛刻一点,而非关系型数据库则使用key-value的方式来创建,所以会比较任性一点。

(5)显示一个数据库中存在的表(集合)。在mysql数据库中使用命令:show table,截图如下:

mysql对比主库从库数据 数据库对比教程_javascript_10

在MongoDB数据库中使用show collections(),截图如下:

mysql对比主库从库数据 数据库对比教程_mysql对比主库从库数据_11

对比:我自我感觉这两种命令都差不多。

(6)在数据库中插入数据。在mysql中插入一条数据,截图如下:

mysql对比主库从库数据 数据库对比教程_脚本_12

在MongoDB里面插入数据,截图如下:

mysql对比主库从库数据 数据库对比教程_javascript_13

而且MongoDB还支持js脚本,可以在终端里面使用js脚本大批量的插入数据,截图如下:

mysql对比主库从库数据 数据库对比教程_javascript_14

对比:两种数据库,通过插入操作更能把MongoDB的key-value特性显示出来。

(7)显示数据库中表(集合)中的数据记录。mysql数据库中查看数据使用命令select * from 表名,截图如下:

mysql对比主库从库数据 数据库对比教程_mongodb_15

MongoDB数据库中查看数据使用命令db.集合名字.find(),截图如下:

mysql对比主库从库数据 数据库对比教程_脚本_16

MongoDB数据库中查看数据条数使用命令db.集合名字.find().count(),截图如下:

mysql对比主库从库数据 数据库对比教程_索引_17

对比:我感觉这两个差不多。

(8)删除数据。在mysql中删除数据使用命令(delete from 表名)是删除整张表的记录。delete from 表名 where id=?是删除特定的记录,截图如下:

mysql对比主库从库数据 数据库对比教程_脚本_18

在MongoDB数据库里面,删除记录使用命令:db.集合名.remove({条件}),截图如下:

mysql对比主库从库数据 数据库对比教程_javascript_19

对比:mysql是通过主键来进行删除的。MongoDB是通过条件来删除的。

(9)接下来就是查询了。在mysql数据库一般都是通过逐渐来查询的(当然没有定义主键的话,会自动生成一个6字节的ROWID),截图如下:

mysql对比主库从库数据 数据库对比教程_mongodb_20

在MongoDB里面进行查询,使用命令:db.集合名.find({条件}),截图如下:

mysql对比主库从库数据 数据库对比教程_mongodb_21

当然天剑如果哦更多的话,匹配度会更大,查询速度回更快,截图如下:

mysql对比主库从库数据 数据库对比教程_脚本_22

对比:MongoDB的查询有点像mysql里面的非索引查询,我感觉这样的查询效率会有点底,但是MongoDB里面是有索引的。

(10)最后一个就是数据的修改更新了。在mysql数据库里面是通过id找到所在的那一条数据,然后在更改,截图如下:

mysql对比主库从库数据 数据库对比教程_mongodb_23

在MongoDB数据库里面修改更新是这样的,我先重新建一个集合,以便于更新效果的查看,截图如下:

mysql对比主库从库数据 数据库对比教程_mongodb_24

然后我们在开始修改操作,先来示范一个错误的操作db.集合名.update({查询条件},{更改的东西}),结果你就会发现,截图如下:

mysql对比主库从库数据 数据库对比教程_mysql对比主库从库数据_25

你会发现第一条记录和第二条记录age是一样的,但是为什么只改了第一条数据的,其实正确的命令应该是这样的db.集合名.update({查询条件},{$set:{更改的东西}},1,1),我在这里解释一下,最后一个1是因为最后一个是从0开始的,要更改两个,所以写成1,截图如下:

mysql对比主库从库数据 数据库对比教程_脚本_26

但是如果你更改的时候条件没有,MongoDB又会自动的添加一条记录,截图如下:

mysql对比主库从库数据 数据库对比教程_mongodb_27

mysql对比主库从库数据 数据库对比教程_mysql对比主库从库数据_28

可以看出原先没有age=40这条记录,所以更改之后,会自动的添加到总记录里面。

对比:MongoDB数据库的更改条件比mysql的苛刻,要求的多。说实话,我有点不太习惯。