数据库建立基本规则
序号 | 注意事项 |
---|
1 | 符合UTF-8标准的字符串 |
2 | 不能是空字符串"" |
3 | 不得含有" "(空格) 、.、$、/、\、\0(空字符) |
4 | 区分大小写,建议全部小写 |
5 | 名称最多为64字节 |
6 | 不得使用保留的数据库名,如admin、local、config、test |
集合名称定义规则
序号 | 注意事项 |
---|
1 | 符合UTF-8标准的字符串 |
2 | 不能是空字符串,如"" |
3 | 不得含有$、\0(空字符) |
4 | 不能以"system."开头,这是为系统集合保留的前缀 |
5 | 用"."来组织子接,如book.name |
文档的键的定义规则
序号 | 注意事项 |
---|
1 | 符合UTF-8标准的字符串 |
2 | 不能包含\0字符(空字符),这个字符表示键的结束 |
3 | ".“和”$"是被保留的,只能在特定环境下用 |
4 | 区分类型(如字符串、整数等),同时也区分大小写 |
5 | 键不能重复,在一条文档里其唯一的作用 |
文档值数据类型
虽然MongoDB在使用时无须直接定义数据存储结构,也无须明确指定文档的数据类型,但是它也存在数据类型概念,在实际业务环境下必须能正确区分存储数据的类型。
序号 | 数据类型 | 描述 | 举例 |
---|
1 | null | 标识空值或未定义的对象 | {"otherbook":null} |
2 | 布尔值 | 真或假(true或者false) | {"allowing":true} |
3 | 32位整数 | shell不支持该类型,默认会转换成64位浮点数,也可以使用NumerInt类 | {"number":NumberInt("3")} |
4 | 64位整数 | shell不支持该类型,默认会转换成64位浮点数,也可以使用NumberLong类 | {"longnumber":NumberLnog("3")} |
5 | 64位浮点数 | shell中的数字就是这一种类型 | {"price":23.5} |
6 | 字符串 | UTF-8字符串 | {"bookname":"资治通鉴"} |
7 | 符号 | shell不支持。它会将数据库中的符号类型的数据自动转换成字符串 | |
8 | 对象id | 文档的12字节的唯一id,保证一条文档记录的唯一性。可以在服务器端自动生成,也可以在代码端生成,允许程序员自行指定id值 | {"id":ObjectId()} |
9 | 日期 | 从标准纪元开始的毫秒数 | {"saledate":new Date()} |
10 | 正则表达式 | 文档中可以包含正则表达式,遵循JavaScript语法 | "foo":/foobar/i |
11 | 代码 | 文档中可以包含JavaScript代码 | {"nodeprocess":function(){}} |
12 | unefined | 未定义 | {Explain":undefined} |
13 | 数组 | 值的集合或者列表 | {"books":["资治通鉴","说文解字"]} |
14 | 内嵌文档 | JSON、XML等文档本身 | {bookname:"资治通鉴",bookprice:33.2,adddate:2017-10-1,allow:true,baseinf:{ISBN:13223234,press:"清华大学出版社"}} |