1.文档
相当于RDBMS中的行,是MongoDB的核心概念,多个键及其关联的值有序地放置在一起便是文档。采用BSON(Binary JSON)的表达方式。
例如:{ "greeting": "Hello, MongoDB"}
特点有:
--文档中的键/值对是有序的
--文档在保留JSON基本的键/值对特性的基础上,添加了一些其他的数据类型。
--不同于RDBMS,文档的键区分大小写
--文档中不能有重复的键
键的命名:
--任意UTF-8字符
--键不能包含\0,这个字符表示键的结尾
--.和$为保留字符,只有在特殊环境下才能使用
--开头的_也为保留字符,虽然并未严格要求
2.集合
一组文档,相当于RDBMS中的表,但是没有固定模式。
集合的命名:
--不能是空字符串“”
--键不能包含\0(空字符),这个字符表示集合的结尾
--不能以"system."开头,这个是为系统集合保留的前缀
--用户创建的集合名不能包含$(可以包含.)
子集合
用于组织集合的一种惯例,使用"."字符分开的命名方式对集合进行命名。比如blog.posts和blog.authors,这样做的目的只是为了使组织结构更好些,blog这个集合其实不存在。
3.数据库
多个集合组成数据库,和RDBMS中的数据库概念类似。
一个MongoDB实例可以承载多个数据库,它们之间可视为完全独立的。每个数据库都有独立的权限控制,即便是在磁盘上,不同的数据库也放置在不同的文件中,文件名和数据库名一致。
数据库的命名:
--不能是空字符串""
--不能包含有' '(空格),.,$,/,\和\0
--应全部小写
--最多64字节
MongoDB的数据库
--admin
root数据库,该数据库里的用户拥有所有数据库的权限
--local
这个数据库永远不会被复制,可以用来存储限于本地单台服务器的任意集合
--config
内部使用,用于保存分片的相关信息
命名空间
把数据库的名字放到集合名前面,通过.连接。例如cms.blog.posts。
命名空间的长度不能超过121字节,在实际使用当中应该小于100字节。
4.数据类型
--null
--boolean
--32位整数(Shell不支持这种类型)
--64位整数(Shell不支持这种类型)
--64位浮点数(Shell中的数字都是这种类型)
--字符串
任意的UTF-8字符串
--符号(Shell不支持这种类型)
--对象id
对象id是文档的12字节的唯一ID
MongoDB的文档必须有一个_id键。这个键可以是任何类型的,默认为ObjectId对象。
ObjectId使用12字节的存储空间,每个字节两位十六进制数字,是一个24位的字符串。
0-3 时间戳
4-6 主机标示符,通常为机器主机名的散列值
7-8 PID(进程ID)
9-11 计数器
注:通常由客户端驱动程序生成ObjectId
--日期
存储从标准纪元开始的毫秒数,不存储时区,如果需要可以将时区作为其它键的值存储。
--正则表达式
--JS代码
--二进制数据(Shell不支持这种类型)
--最大值(Shell不支持这种类型)
--最小值(Shell不支持这种类型)
--undefined
--数组
--内嵌文档
5.Shell
MongoDB自带的JavaScript工具,可以从命令行于MongoDB实例交互。
6.参考资料
《MongoDB权威指南》