数据库建立基本规则
序号 |
注意事项 |
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:"清华大学出版社"}} |