①
数据库
MongoDB的一个实例可以拥有一个或多个相互独立的数据库,每个数据库都有自己的集合
集合
集合可以看作是拥有动态模式的表
文档
文档是MongoDB中基本的数据单元,类似于RDB的行。
文档是键值对的一个有序集合。在JS中,文档被表示成对象。
_id
每个文档都有个特殊的“_id”,在文档所属集合中是唯一的
JavaScript shell
MongoDB自带了一个功能强大的JavaScript Shell,可以用于管理或操作MongoDB
②MongoDB和RDB的一些对比
1:都有数据库的概念
2:集合--〉RDB的表
3:文档--〉RDB表中的一条记录
4:文档对象里面的key --〉RDB表中的字段
5:文档对象里面的value--〉RDB表中字段的值
6:MongoDB中没有主外键的概念
③数据库名称定义规则
1:不能是空串
2:不得含有/、\、?、$、空格、空字符等等,基本只能使用ASCII中的字母和数字
3:区分大小写,建议全部小写
4:最多为64字节
5:不得使用保留的数据库名,比如:admin,local,config
注意:数据库最终会成为文件,数据库名就是文件的名称
④集合名称定义规则
1:不能是空串
2:不能包含字符(空字符),这个字符表示集合名的结束,也不能包含”$”
3:不能以”system.”开头,这是为系统集合保留的前缀
⑤文档的键的定义规则
1:不能包含字符(空字符),这个字符表示键的结束
2:“.”和“$”是被保留的,只能在特定环境下用
3:区分类型,同时也区分大小写
4:键不能重复
注意:文档的键值对是有顺序的,相同的键值对如果有不同顺序的话,也是不同的文档
⑥MongoDB基本的数据类型
数据类型 | 描述 | 举例 |
null | 表示空值或者未定义的对象 | {"x":null} |
布尔值 | true或者false | {"x":true} |
32位整数 | shell不支持该类型,默认会转换成64位浮点数,也可以使用NumberInt类 | {“x”:NumberInt(“3”)} |
64位整数 | shell不支持该类型,默认会转换成64位浮点数,也可以使用NumberLong类 | {“x”:NumberLong(“3”)} |
64位浮点数 | shell中的数字就是这一种类型 | {"x":3.14,"y":3} |
字符串 | UTF-8字符串 | {"foo":"bar"} |
符号 | shell不支持,shell会将数据库中的符号类型的数据自动转换成字符串 | |
对象id | 文档的12字节的唯一id | {"id": ObjectId()} |
日期 | 从标准纪元开始的毫秒数 | {"date":new Date()} |
正则表达式 | 文档中可以包含正则表达式,遵循JavaScript的语法 | {"foo":/foobar/i} |
代码 | 文档中可以包含JavaScript代码 | {"x":function() {}} |
未定义 | undefined | {"x":undefined} |
数组 | 值的集合或者列表 | {"arr": ["a","b"]} |
内嵌文档 | 文档可以作为文档中某个key的value | {"x":{"foo":"bar"}} |
⑦
⑧
⑨
⑩
⑪
⑫
⑬
⑭
⑮
⑯
⑰
⑱
⑲
⑳