1)一个mongodb有多个数据库,默认数据库为'db'(存储在data目录下)。
2)MongoDB的单个实例可以包括多个独立的数据库,每个数据库有自己的集合和权限,不同数据库可以放不同的文件。
3)数据库名规则(UTF-8字符串):全部小写、最多64位、不包含‘’(空格)、$、/、\和\0(空字符)
4)保留数据库:
1、admin
(1)权限角度看,该数据库为“root”数据库,一个用户添加到该数据库中,该用户自动继承所有数据库的权限。
(2)某些命令只能在该数据库运行(比如:关闭服务器、列出所有的数据库)。
2、local:用于存储限于本地单台服务器的集合(这个数据库永远不会被复制)。
3、config:当MongoDB用于分片设置时,config数据库用于保存分片的相关信息。
1)是一组key-value对(键值对)。
2)不需要设置相同的字段且相同字段不需要相同的数据类型。
3)例子:
{"name":"wjwlh","year":18,"height":195}4)表联合就是嵌入文档。
5)注意点:
1、文档中的键值对是有序的。
2、对类型和大小写敏感。
3、文档中的value可以为字符串等多种类型的数据。
4、文档中的key不能重复,文档中的key是字符串类型/任意UTF-8字符(少数情况下)。
6)文档键命名规范:
1、key不能包含"\0"(空字符)------该字符表示键的结尾。
2、.和$在特定情况下使用。
3、_开头的键是保留的
1)是文档组(多个文档的集合,类似于关系型数据库中的表格)。
2)例: 第一个文档插入时,集合就会被创建。
{"name":"wjwlh","year":18,"height":195} {"name":"lj","year":16,"height":165} {"name":"hxj","year":19,"height":175}3)集合名命名规范(三不能):不能为“”,不能含\0字符和保留字符,不能以"System."开头。
4)示例:
db.col.findTow()5)Capped collections(固定大小的collection)
1、会自动维护对象的插入顺序,并且会按照插入顺序进行过期。
2、必须显示的创建一个capped collection(指定大小(包含了数据库的头信息),单位字节)
3、示例:
//生成一个10000字节的大小、按序的Capped collections集合 db.createCollection("firstColl",{capped:true,size:10000})4、capped collection能够添加对象、能进行更新(不会增加存储空间,增加的话,更新失败),不允许删除。drop()删除collection的所有行,删除之后必须重新创建这个collection。
1)命名空间dbname.system.*包含的系统信息:
集合命名空间
描述
dbname.system.namespaces
列出所有命名空间
dbname.system.indexes
列出所有索引
dbname.system.profile
包含数据库概要(profile)信息
dbname.system.users
列出所有可访问数据库的用户
dbname.local.sources
包含复制对端(slave)的服务器信息和状态
2)注意事项:(1){{system.indexes}}插入数据,可以创建索引(其它不可变)。
(2){{system.users}}是可修改的。
(3){{system.profile}}是可删除的。
数据类型
描述
String
字符串(UTF-8编码的字符串菜合法)
Integer
整型,保存数值(32位或64位)
Boolean
布尔值(true/false)
Double
双精度浮点数
Min/Max keys
将值于BSON(二进制的JSON)元素的最低值和最高值进行比较
Arrays
保存数组或列表或多个值到一个键
Timestamp
时间戳(记录某个操作的具体时间)
Object
内嵌文档
Null
创建空值
Symbol
符号(基本等同于字符串,用于采用特殊符号类型的语言)
Date
日期时间
Object ID
对象 ID(创建文档的ID)
Binary Data
二进制数据(保存二进制数据)
Code
代码类型(保存JavaScript代码的)
Regular expression
正则表达式类型(保存正则表达式)