1. 文档(Document)
a.文档是MongoDB的核心概念,多个键及其关联的值有序地放置在一起便是文档 ps:多个键值对便是文档
例如,在javascript,文档表示为对象:{"name" : "Elvin","age" : 22} --文档1
{"age" : 22,"name" : "Elvin"} --文档2
b.文档的键/值对是有序的,文档1和文档2是完全不同的。
c.文档里面的键是字符串。除了少数例外情况,键可以使用任意UTF-8字符
- 键不能含有\0(空字符)。 ps:这个字符用来表示键的结尾
- .和$有特别的意义,只能在特定环境下才能使用,通常是被保留的,使用不当的话驱动程序会提示
- 以下划线"_"开头的键是被保留的
d.文档的值不仅可以是双引号里面的字符串,还可以是其他几种数据类型 ps:甚至可以嵌入整个文档
e.MongoDB不但区分类型,还区分大小写。例如,下面的文档是不同的
{"foo" : 3} 和{"foo" : "3"}
{"Foo" : 3} 和{"foo" : 3}
还有一个特别需要注意的事项就是:
MongoDB不能有重复的键
2.集合
集合就是一组文档。如果MongoDB中的文档类似于关系型数据库的行 那么集合就如同表。
a.无模式
集合是无模式的。这意味着一个集合里的文档可以是各式各样的。例如,下面俩个文档可以存在一个集合里面:
{"name"} : "Elvin"}
{"age" : 22
b.集合的命名
- 集合不能是空字符串“”
- 集合名不能含有\0(空字符),这个字符表示集合名的结尾
- 集合名不能以“system.”开头,这是系统集合保留的前缀,如system.users ,system.namespances
- 用户创建的集合名字不能含有保留字符$,除非要访问系统创建的集合,否则千万不要在名字里出现$.
c.子集合
组织集合的一种惯例是使用“.”字符分开的按命名空间划分的子集合。例如 一个博客功能的应用可能包含两个集合
分别是blog.posts和blog.authors,这样做的目的是使组织结构更好些。
3.数据库
MongoDB中多个文档组成集合,同样 多个集合可以组成数据库。
和集合一样,数据库也通过名字来标示,数据库名可以是满足一下条件的任意UTF-8字符
- 不能是空字符串“”
- 不得含有空格,点,$,/,\和空字符(\0)
- 应全部小写
- 最多64字节
要记住一点,数据库名最终会变成文件系统里面的文件,这也是诸多限制的原因。
有一些数据库是保留的,可以直接访问
- admin 从权限的角度看 这是“root"数据库,要是将一个用户加入到这个数据库,这个用户自动继承所有数据库的权限。一些特定的服务器端命令也只能从这个数据库运行,例如:列出所有的数据库或者关闭服务器
- local
- config
把数据库名字放到集合名前面,得到的就是完全限定名,成为命名空间。命名空间的名字不得超过121字节,一般应小于100字节。