2、创建切换数据库
2.1 默认数据库
mongo数据库和其他类型的数据库一样,可以创建数据库,且可以创建多个数据库。
mongo数据库默认会有四个数据库,分别是
-
admin:主要存储MongoDB的用户、角色等信息
-
config:主要存储分片集群基础信息
-
local:主要存储副本集的元数据
-
test:在不插入数据时不会显示出来
test库是一个默认的数据库,除了test库外admin、config、local库为系统库
2.2.1 admin库
admin数据库是mong默认的系统库之一,它最主要用来存放一些用户、角色以及版本等信息,在admin库下默认有两个集合(在其他数据库中叫表),分别是角色信息和版本信息。
# 切换到admin库下
use admin
# 查看是否切换成功
db
#查看admin库中的集合
show collections
其中 system.version主要存储一些featureCompatibilityVersion信息和authSchema信息
db.system.version.find()
system.users主要存储一些用户 角色信息
可以在admin数据库下建立任意集合,存储任何数据,但强烈建议不要使用admin数据库存储应用业务数据,最好创建新的数据库。
admin数据库里的system.users集合的数据会缓存到内存里,这样不用每次鉴权都从磁盘加载用户角色信息。
MongoDB admin数据库的写入操作的锁级别只能到DB级别,不支持多个collection并发写入,在写入时也不支持并发读取。如果用户在admin数据库里存储业务数据,则可能遭遇性能问题。
2.2.2 config库
config数据库也是mongo默认的系统库之一, 主要存储副本集的元数据
# 切换到local库下
use local
# 查看是否切换成功
db
#查看local库中的集合,
show collections
2.2.3 local库
local数据库也是mongo默认的系统库之一, 主要用来存储分片集群的信息,一般只有在分片是起作用
# 切换到local库下
use local
# 查看是否切换成功
db
#查看local库中的集合,
show collections
2.2 创建切换删除数据库
2.2.1 创建切换数据库
在mongo中创建和切换数据库用的是同一个命令
use database_name
如果DataBase_Name存在,则直接切换,若不存在则直接创建
# 查看当前已存在的所有数据库
>show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
# 创建数据库
>use demo
switched to db demo
# 再次查看当前存在的所有数据库
>show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
# 可以发现,没有刚才自己创建的数据库,那是因为在mongo中创建的数据库默认不展示,需要想向数据库中插入数据,此时数据库才会展示
>db.demo.insert({"name":"hello worod"});
>>show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
demo 0.000GB
2.2.3 删除数据库
#切换到需要删除的数据库
>use demo
#查看
>db
#删除
>db.dropDatabase()
2.2.4 数据库命名规范
- 不能是空字符串(“”)
- 不得含有’ '(空格)、.、$、/、\和\0 (空字符)。
- 应全部小写,且最多64字节
- 有一些数据库名是保留的,不能作为自己的库名(例如:admin config local)
3、集合操作
在mongo数据库中,数据表叫做集合。
SQL术语/概念 | MongoDB术语/概念 | 解释/说明 |
---|---|---|
database | database | 数据库 |
table | collection | 数据库表/集合 |
3.1 创建集合
在mongo中创建集合的方式主要分为两类:
- 隐式创建集合
- 显示创建集合
3.1 隐式创建集合
隐式创建集合,顾名思义就是在你没有创建集合,但是却mongo已经帮你创建好集合了。其实本质是当我们在创建数据库的时候,mongo默认会给你创建一个和数据库名一样的集合
use demo
db.demo.insert({id:1,name:"hello mongo"})
此时就会创建一个默认的集合,但是如果不插入数据,则该数据库不会展示.
3.2 显示创建集合
显示创建集合就是通过命令进行显示的创建集合
语法:
db.createCollection(name, options)
参数说明:
- name: 要创建的集合名称
- options: 可选参数, 指定有关内存大小及索引的选项
字段 | 类型 | 描述 |
---|---|---|
capped | 布尔 | 如果为 true,则创建固定集合。固定集合是指有着固定大小的集合,当达到最大值时,它会自动覆盖最早的文档。 当该值为 true 时,必须指定 size 参数。,默认为false |
size | 数值 | 为固定集合指定一个最大值,即字节数。 如果 capped 为 true,也需要指定该字段。 |
max | 数值 | 指定固定集合中包含文档的最大数量。 |
例子:
#得到所有集合(不包含集合的详细信息)
db.getCollectionNames()
#得到集合的详细信息
db.getCollectionInfos()
#创建固定集合
db.createCollection("test1",{capped:true,size:1000,max:1000})
#创建非固定集合
db.createCollection("test")
3.2 查看集合
查看的集合的方式主要分为两种
- 查看集合的详细信息
- 查看集合,只得到集合的名字
#得到所有集合(不包含集合的详细信息)
db.getCollectionNames()
#得到集合的详细信息
db.getCollectionInfos()
3.3 删除集合
当我们不想使用某个集合(表),或者不在使用某个集合时,为了节约空间,此时我们可以将某个集合删除, 但是在删除集合时一定要特别注意,一般不建议删除集合,尤其是在生产环境中.
语法:
db.collection_Nane.drop()
如果删除成功,则返回true,否则返回false
例子:
#删除某个集合
db.test.drop()
注意:不建议进行此操作,尤其是在生产环境中。