MongoDB数据库基本操作(附带实例)
MongoDB 安装完成后,其默认的数据库是 test。读者学习时可以在默认 test 数据库上进行各种练习操作。
当然,实际的操作过程中需要创建很多实例,因此,读者需要掌握自定义数据库的基本规则。
	
注意,数据库最终会以文件的形式存在,数据库名就是文件的名称,因此,在命名时还需注意以下几点:
对于 MongoDB 来说,这些命名格式是正确的:myDB、my_NewDB、myDB12;这些命名格式是不被接受的:.myDB、/123。
	
	
	
当然,实际的操作过程中需要创建很多实例,因此,读者需要掌握自定义数据库的基本规则。
MongoDB数据库的命名规则
数据库的名称为字符串,其命名规则要符合 UTF-8 标准,同时还要遵循下表所示的注意事项。| 序号 | 注意事项 | 
|---|---|
| 1 | 不能是空字符串 | 
| 2 | 不得含有^、?、$,以及空格、空字符等,建议使用 ASCII 码中的字母和数字 | 
| 3 | 字母不区分大小写,建议采用全部小写的形式 | 
| 4 | 名称大小最多为 64B | 
| 5 | 不得使用保留的数据库名,如 admin、local、config 等 | 
注意,数据库最终会以文件的形式存在,数据库名就是文件的名称,因此,在命名时还需注意以下几点:
- 由于数据库名称在 MongoDB 中不区分字母大小写,因此数据库名称的区别不能仅仅是字符大小写的区别;
 - 对于在 Windows 环境上运行的 MongoDB,数据库名称不能包含这些字符:/\、“、$、*、<、>、:、|和?;
 - 对于在 UNIX 和 Linux 环境上运行的 MongoDB,数据库名称不能包含这些字符:/\、。、“ 和 $;
 - 虽然 UTF-8 标准支持 MongoDB 使用中文作为数据库名,但我们建议采用以字母、数字、字符等为主的命名方式。
 
对于 MongoDB 来说,这些命名格式是正确的:myDB、my_NewDB、myDB12;这些命名格式是不被接受的:.myDB、/123。
MongoDB数据库操作
1) 数据库类型
MongoDB 保留的数据库如下表所示:| 库名 | 作用 | 
|---|---|
| admin | 权限数据库,添加用户到该数据库中,该用户会自动继承数据库的所有权限 | 
| local | 该数据库中的数据永远不会被复制 | 
| config | 分片时,config 数据库在内部使用,保存分片信息 | 
| test | 默认数据库,可以用来做各种测试等 | 
| 自定义数据库 | 根据应用系统的需要建立的业务数据库 | 
2) 创建自定义数据库
使用 use 命令创建数据库,具体代码如下:use myDB如果数据库不存在,那么 MongoDB 会在第一次使用该数据库时创建数据库。如果数据库已经存在,则 MongoDB 会连接数据库,然后在该数据库进行各种操作。
3) 查看数据库
使用 show 命令查看当前数据库列表,具体代码如下:
> show dbs          // 可以在当前数据库上执行该命令
admin    0.000GB    // 保留数据库admin
myDB     0.000GB
            // 自定义的数据库myDB,该数据库中已经插入记录,没有记录的自定义数据库不会被显示
local    0.000GB    // 保留数据库local
test     0.000GB    // 保留数据库test
MongoDB 默认的数据库为 test。如果没有创建新的数据库,集合将存储在 test 数据库中。如果自定义数据库没有插入记录,那么当用户查看数据库时,这类数据库不会被显示,而插入数据的数据库会显示相应的信息。4) 统计数据库信息
使用 stats() 方法可查看数据库的具体统计信息。注意对某个数据库进行操作之前,一定先用 use 命令切换至该数据库,否则会出错,代码如下:
> use test             // 选择执行的test数据库
switched to db test    // use执行后返回的结果
> db.stats()           // 统计数据信息
{
    "db": "test",      // 数据库名
    "collections": 0,  // 集合数量
    "views": 0,
    "objects": 0,      // 文档数量
    "avgObjSize": 0,   // 平均每个文档的大小
    "dataSize": 0,     // 数据占用空间大小,不包括索引,单位为字节(B)
    "storageSize": 0,  // 分配的存储空间
    "numExtents": 0,   // 连续分配的数据块
    "indexes": 0,      // 索引个数
    "indexSize": 0,    // 索引占用空间大小
    "fileSize": 0,     // 物理存储文件的大小
    "ok": 1
}
5) 删除数据库
使用 dropDatabase() 方法删除数据库,代码如下:
> db.dropDatabase()            // 删除当前数据库
{"dropped": "myDB","ok": 1}    // 删除成功
6) 查看集合
使用 getCollectionName() 方法查询当前数据库下的所有集合,代码如下:use test db.getCollectionNames() // 查询当前数据库下的所有集合
 ICP备案:
 公安联网备案: