MongoDB不是关系型数据库,因此也就没有了表,行等概念,但是有一些类似的概念,主要有 数据库(Database),集合(Collection),文档(Document),其中数据库跟关系型数据库的数据库是一个概念,集合相当于表,文档相当于行。下面分别来介绍这些概念。
1. 文档:
文档是MongoDB的核心概念,也是MongoDB种数据的基本单元。所谓文档就是多个键及其关联的值有序的放置在一起。如,
{"greeting":"Hello World!"}
在这个文档中,"greeting"是键,"Hello World!"是值
当然,绝大多数的文档包含多个键/值,比这个要复杂的多,如:
{"author":"Tian","Sex":"M","hobby":"MBK"}
甚至文档里面还包含文档。
1.1 文档的键的命名规则
1). 文档的键是字符串;
2). 键不能包含有\0(空字符),这个字符用来表示键的结尾;
3). $和.有特殊的含义,被保留了;
4). 以下划线"_"的键被保留了,虽然这个并不是严格的要求。
5). 文档的键不能重复
6). 区分大小写,如{"author":"tian"}和{"Author":"tian"}是不一样的
2. 集合
集合,指的是一组文档。
MongoDB的集合虽然类似于关系数据库的表,但是,集合是无模式的,不必像关系数据库的表那样,必须事先定义,并且结构固定。
我们可以将以下2个文档存到同一个集合中:
{"author":"tian"}
{"age":6}
这两个文档,键不一样,对应的值也不一样,甚至类型也不一样,而这在关系数据库中是不可想象的。
2.1 集合的命名
1). 集合名不能是空字符串""
2). 集合名不能含有\0(空字符),这个字符是集合名的结尾
3). 集合名不能以"system."开头,以"system."开头表示系统集合,如system.users这个集合保留数据库用户的信息,system.namespaces这个集合保存数据库所有集合的信息
4). 用户创建的集合名字不能含有保留字符$
2.2 子集合
我们可以通过"."字符分开的按命名空间划分的子集合来组织集合。如,一个带有博客功能的应用可能包含2个集合blog.authors和blog.posts,这样做的目的只是为了组织更好,事实上, 我们不一定存在blog这个集合的。
3. 数据库
多个集合组成数据库。一个MongoDB实例可以包含多个数据库,他们之间可以视为完全独立。
3.1 数据库命名
1). 不能是空字符串;
2). 不能含有空格、.、$、/、\、和\0;
3). 应全部小写;
4). 最多64字节;
5). 不能是保留的数据库名:admin,local,config
参考:MongoDB权威指南