mongoDB3--mongoDB的基本操作。
![](http://static.blog.csdn.net/images/category_icon.jpg)
版权声明:本文为博主原创文章,未经博主允许不得转载。
之前我们已经安装了mongodb,并使用客户端连接上了mongodb的服务端。
接下来我们学习一些简单的操作命令。
mongo入门命令
在传统关系型数据库中,我们分为一个个的库,每个库下分为一个个的表:
![](//img-blog.csdn.net/20161225103317679?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYWNtbWFu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
我们的mongodb也和上面一样,在数据库database下面有N多集合,每个集合
中的数据结构可以完全不同:
![](//img-blog.csdn.net/20161225103334401?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYWNtbWFu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
(1)查看目前所有数据库(show dbs)
我们启动mongodb客户端,使用show dbs指令,可以查看目前所有数据库:
![](//img-blog.csdn.net/20161225103346714?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYWNtbWFu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
(2)选择数据库(use databaseName)
我们选择local数据库:
![](//img-blog.csdn.net/20161225103357542?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYWNtbWFu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
使用show tables可以查看该库下有哪些表。
注意:system开头的表是系统表,不要随意操作,可能会造成数据库崩溃。
(3)查看当前库下的集合(show collections/tables)
上面使用的是show tables,这个语法是为了照顾经常使用关系型数据库的
用户,而使用show collections也是查看该库下的集合(说“表”也可以)。
![](//img-blog.csdn.net/20161225103412792?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYWNtbWFu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
(4)创建数据库
MongoDb的库是隐式创建,你可以use一个不存在的库,
然后在该库下创建collection,即可创建库。
(5)创建一个集合(db.createCollection('CollectionName'))
我们先创建一个库(use school学校库),
然后使用db.createCollection('CollectionName')指令,
创建一个集合(也就是关系型数据库中所说的“表”),
其中“CollectionName”是你要创建的集合的名称:
![](//img-blog.csdn.net/20161225103433605?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYWNtbWFu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
我们在school库中创建了一个名为student(学生)的集合。
创建Collection的意义:
对于传统关系型数据库而言,创建一张表的意义在于,界定了这张表每一行的结构,
包括应该有哪几列,数据类型是什么,全部统统界定了。
而对于mongodb这种nosql数据而言,Collection的意义何在?我们每一个Colleciton
其实就是一个大的集合,里面用来放置各种各样不同的文档数据而已。
(6)插入一条数据(db.collectionName.insert({key:value,key:value,...}))
我们在刚刚的school库的student集合中创建一条数据:
![](//img-blog.csdn.net/20161225103448759?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYWNtbWFu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
使用db.collectionName.find()查看该集合下的所有数据。
我们发现它自动给我们生成了一个id主键。当然,我们也可以自己制定主键:
![](//img-blog.csdn.net/20161225103510337?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYWNtbWFu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
也即是指定_id属性即可。
我们也可以在同一个集合下,创建含有其他字段的数据:
![](//img-blog.csdn.net/20161225103526963?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYWNtbWFu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
不受数据结构的束缚,这就正是mongodb的特点。
不仅可以有其他字段,还可以在某个属性中嵌套属性:
![](//img-blog.csdn.net/20161225103543590?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYWNtbWFu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
可以看到,jackson有一个爱好(hobby)属性,里面是一个数组,然后有一个简介(info)属性,里面有一个新的集合。这就是一个复合集合文档对象了。
注:可以通过插入一条数据,隐式创建一个Collection:
(7)删除一个collection(db.collectionName.drop())
我们这里删除我们刚刚创建的teacher这个collection
![](//img-blog.csdn.net/20161225103823029?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYWNtbWFu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
删除成功
(8)删除一个库(db.dropDatabase())
我们这里删除我们刚刚创建的school这个库
![](//img-blog.csdn.net/20161225103839326?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYWNtbWFu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
接下来我们学习一些简单的操作命令。
mongo入门命令
在传统关系型数据库中,我们分为一个个的库,每个库下分为一个个的表:
我们的mongodb也和上面一样,在数据库database下面有N多集合,每个集合
中的数据结构可以完全不同:
(1)查看目前所有数据库(show dbs)
我们启动mongodb客户端,使用show dbs指令,可以查看目前所有数据库:
(2)选择数据库(use databaseName)
我们选择local数据库:
使用show tables可以查看该库下有哪些表。
注意:system开头的表是系统表,不要随意操作,可能会造成数据库崩溃。
(3)查看当前库下的集合(show collections/tables)
上面使用的是show tables,这个语法是为了照顾经常使用关系型数据库的
用户,而使用show collections也是查看该库下的集合(说“表”也可以)。
(4)创建数据库
MongoDb的库是隐式创建,你可以use一个不存在的库,
然后在该库下创建collection,即可创建库。
(5)创建一个集合(db.createCollection('CollectionName'))
我们先创建一个库(use school学校库),
然后使用db.createCollection('CollectionName')指令,
创建一个集合(也就是关系型数据库中所说的“表”),
其中“CollectionName”是你要创建的集合的名称:
我们在school库中创建了一个名为student(学生)的集合。
创建Collection的意义:
对于传统关系型数据库而言,创建一张表的意义在于,界定了这张表每一行的结构,
包括应该有哪几列,数据类型是什么,全部统统界定了。
而对于mongodb这种nosql数据而言,Collection的意义何在?我们每一个Colleciton
其实就是一个大的集合,里面用来放置各种各样不同的文档数据而已。
(6)插入一条数据(db.collectionName.insert({key:value,key:value,...}))
我们在刚刚的school库的student集合中创建一条数据:
使用db.collectionName.find()查看该集合下的所有数据。
我们发现它自动给我们生成了一个id主键。当然,我们也可以自己制定主键:
也即是指定_id属性即可。
我们也可以在同一个集合下,创建含有其他字段的数据:
不受数据结构的束缚,这就正是mongodb的特点。
不仅可以有其他字段,还可以在某个属性中嵌套属性:
可以看到,jackson有一个爱好(hobby)属性,里面是一个数组,然后有一个简介(info)属性,里面有一个新的集合。这就是一个复合集合文档对象了。
注:可以通过插入一条数据,隐式创建一个Collection:
(7)删除一个collection(db.collectionName.drop())
我们这里删除我们刚刚创建的teacher这个collection
删除成功
(8)删除一个库(db.dropDatabase())
我们这里删除我们刚刚创建的school这个库
删除成功