Mongodb基础
1.1 文档
文档是Mongodb的核心概念,文档就是键值对的一个有序集,文档的键是字符串,除了少数例外情况,键可以是任意UTF-8字符。
- 键不能含有\0(空字符),这个字符表示键的结尾
- .和$具有特殊意义,只能在特定环境下使用
文档中的值可以是多种不同的数据类型(甚至是一个完整的内嵌文档)。Mongodb不但区分类型,而且区分大小写,还有Mongodb的文档不能有重复的键。文档中的键值对是有序的:{ “x”:1, “y”:2}与{ “y”:2, “x”:1}是不同的,通常字段顺序并不重要,无须让数据库模型依赖特定的字段顺序(Mongodb会对字段重新排序),只有在某些特殊情况下,字段顺序才变得非常重要。
2.2 集合
集合就是一组文档,如果将Mongodb中的一个文档比喻为关系数据库中的行,那么一个集合就相当于一张表。集合是动态模式,里面可以放任何文档。
集合名可以是满足下列条件的任意UTF-8字符串
- 集合名不能是空字符串
- 集合名不能包含\0字符,这个字符表示集合名的结束
- 集合名不能以“system.”开头,这是系统集合保留的前缀,例如system.users这个集合保存这数据库的用户信息,而system.namespace集合保存这所有数据库集合的信息。
- 用户创建的集合名最好不要包含$符号,因为某些系统生成的集合中包含$。
2.3 数据库
多个文档组成集合,多个集合组成数据库,一个Mongodb实例可以有多个数据库。
每个数据库拥有0个或着多个集合,每个数据库都有独立的权限。
数据库名可以是满足下面条件的任意UTF-8字符串:
- 不能是空字符串
- 不得包含特殊字符,基本上只能使用ASCII中的字母和数字
- 数据库名区分大小写,即便是在不区分大小写的文件系统中也是如此,通常数据库名应全部小写。
- 数据库名最多为64字节
记住一点,数据库最终会变成文件系统里的文件,而数据库名就是相应的文件名,这就是数据库名如此多限制的原因。
另外,有一些数据库名是保留的,如:
- admin
这是root数据库,如果将一个用户添加到admin数据库,这个用户将自动获得所有数据库的权限 - local
这个数据库永远都不可以复制,且一台服务器上所有本地集合都可以存储在这个数据库中 - config
Mongodb用于分片设置时,分片信息会存储在config数据库中。