Database
- MongoDB 将数据记录存储为文档(特别是 BSON 文档)
- 这些文档在集合中聚集在一起
- 数据库存储一个或多个文档集合。
- 在 MongoDB 里面存在数据库的概念,但没有模式
Shell
MongoDB 自带了一个功能强大的 JavaScript Shell,可以用于管理或操作 MongoDB
默认数据库
- MongoDB 数据库初始安装完成后,默认的数据库是 test
- 学习时可以在默认 test 数据库上进行各种练习操作
MongoDB 数据库的命名规则
MongoDB 数据库的命名要符合 UTF-8 标准的字符串
序号 | 注意事项 |
1 | 不能为空 |
2 | 不得含有 /、\、?、$、空格、空字符等,基本只能使用 ASCII 中的字母和数字 |
3 | 区分大小写,建议全部小写 |
4 | 少于64个字符 |
5 | 不得使用保留的数据库名,如:admin、local、config |
重点
数据库最终会成为文件,数据库名就是文件的名称
- 由于数据库名称在 MongoDB 中区分大小写,因此数据库名称不能仅仅区别于字符
- 对于在 Windows 上运行的 MongoDB,数据库名称不能包含以下字符: /\. "$*<>:|?
- 对于在 UNIX 和 Linux 系统上运行的 MongoDB,数据库名称不能包含以下字符: /\. "$
- 虽然 UTF-8 可以提供很多国家的语言的命名格式,在 MongoDB 数据库命名时也可以使用汉字作为数据库名,但是最好尽量采用英文字母、数字、字符等为主的命名格式
正确的命名格式
myDB、my_NewDB、myDB12
错误的命名格式
.myDB、/123
保留数据库
MongoDB 安装成功后就有的数据库
库名 | 作用 |
admin | 权限数据库,添加用户到该数据库中,该用户会自动继承数据库的所有权限 |
local | 数据库中的数据永远不会被复制 |
config | 分片时,config 数据库在内部使用,保存分子信息 |
test | 默认数据库,可以用来做各种测试等 |
但现在新版的,貌似没有 test 数据库了
查看数据库
MongoDB 使用 show 命令查看当前数据库列表
>show dbs //可以在任意当前数据库上执行该命令
admin 0.000GB //保留数据库,admin
myDB 0.000GB //自定义数据库,myDB,该数据库里已经插入记录,没有记录的自定义数据库不会显示
local 0.000GB //保留数据库,local
test 0.000GB //保留数据库,test
重点
- MongoDB 默认的数据库为 test,如果没有创建新的数据库,集合(Collections)将存储在 test 数据库中
- 如果自定义数据库没有插入记录,则用户在 show dbs 时是不会显示该自定义数据库的,只有存在数据的数据库才会显示
使用数据库
use database_name
- 如果数据库已经存在则连接数据库,然后可以在该数据库进行各种操作
- 如果数据库不存在,则在第一次为该数据库存储数据时,MongoDB 会创建该数据库
小栗子
> show dbs // 查看数据库 admin 0.000GB config 0.000GB local 0.000GB > use test // 使用 test 数据库 switched to db test > show dbs // 查看数据库,还是没有 test 数据库 admin 0.000GB config 0.000GB local 0.000GB > db.myNewCollection1.insertOne( { x: 1 } ) // 插入一条数据到 test 数据库的 myNewCollection1 集合中 { "acknowledged" : true, "insertedId" : ObjectId("60b340d196a866c106d3c564") } > show dbs // 查看数据库,添加数据之后,test 数据库可以查看到了 admin 0.000GB config 0.000GB local 0.000GB test 0.000GB
统计数据库信息
注意对某个数据库进行操作之前,一定要用 use 切换至数据库,否则会出错
> db.stats() { "db" : "test", "collections" : 1, // 集合数量 "views" : 0, // 视图数量 "objects" : 1, // 文档数量 "avgObjSize" : 33, // 每个文档的平均大小(以字节为单位) "dataSize" : 33, // 此数据库中保存的未压缩数据的总大小 "storageSize" : 20480, // 为此数据库中的集合分配的用于文档存储的总空间量 "indexes" : 1, // 索引数量 "indexSize" : 20480, // 索引大小 "totalSize" : 40960, // storageSize+indexSize "scaleFactor" : 1, "fsUsedSize" : 67665461248, // 正在使用的磁盘空间大小 "fsTotalSize" : 499963174912, // 总的磁盘空间大小 "ok" : 1 }
删除数据库
>db.dropDatabase () //删除当前数据库
{ ndropped" : "myDBn Jok" : 1} //显示结果删除成功