MongoDB的几个基本概念
文档(document)
文档是键值对的有序集合, 它是MongoDB中数据的基本单元
在不同的编程语言中有相应的实现, 如Java的Map, Python的
Dictionary.
JavaScript中表示文档是这样表现的:
{"hello":"world"}
这个文档中有一个键"hello", 它对应的值是"hello".
文档中可以有多个键值对, 如
{"hello":"world", "num":3}
文档的值可以是多种不同的类型, 甚至是另一个文档, 如
{"hello":"world", "doc":{"a":3, "b":4}}
MongoDB不仅区分值的类型, 而且区分大小写, 下面两个文档是不同的
{"foo":3}
{"Foo":"3"}
MongoDB中文档的键值对是有序的, 下面两个文档是不同的
{"x":1,"y":2}
{"y":2,"x":1}
文档的键的命名规则:
- 不能包含\0(空字符), 空字符用于表示键的结尾.
- .和$具有特殊意义, 只能在特定环境下使用.
- MongoDB不允许文档中出现重复的键.
集合(collections)
集合就是一组文档, 如果将文档比作关系数据库的行, 那么集合就相当于一张表.
MongoDB里的集合是动态模式的, 这意味着, 集合里的文档可以是各式各样的, 不必遵循同样的模式.
尽管如此, 我们仍需要将不同类型的文档分别存储到不同的集合中, 原因如下
- 不利于检索数据
- 影响应用性能
- 无法有效的创建索引
集合的命名规则
- 不能是空字符串
- 不能包含\0
- 不要以"system."开头, 这是系统集合保留的前缀
- 不要在集合名中包含$
数据库
在MongoDB中多个文档组成集合, 多个集合可以组成数据库.
每一个MongoDB的实例可以管理多个数据库.
数据库的命名规则
- 不能是空字符串
- 不能含有/."*<>:|?$和\0, 基本只能使用ASCII字母和数字
- 数据库名字区分大小写
- 数据库名最多64字节
因为归根结底, 这些数据库最终会落地为磁盘上的文件, 所以它命名的限制和文件命名的限制很相似.
- 最后有些系统保留的数据库名不能使用, 如admin, local, config等
网友评论