随着web2.0的时代到来,关系型数据库在越来越多的场景下暴漏出许多问题,为了解决这类问题,NoSql数据库应用而生,今天就来说说当下比较主流的NoSql数据库mongodb。
1. 基本数据类型 mongodb类似于json,在概念上javaScript类似。json是数据的一种简单表示方法,包含6种数据类型,分别是:null, 布尔,数字,字符串,数组和对象。没有时间数据类型,在操作时间上就会很麻烦。而mongodb在保留json基本的键值对的特性基础上,添加了其它的数据类型。
数据类型 | 文档的表示方式 | 说 明 |
null | {"x":null} | null表示空值或者不存在的字符串 |
布尔 | {“x”:true} | 布尔有两个值true或false |
32位整数 | 在Shell中这个类型是不可用的,因为javaScript只支持64位浮点数,所有32位整数会自动转换。 | |
64位整数 | 在Shell中也不支持这个类型,Shell会使用一个特殊的内嵌文档来显示64位整数 | |
64位浮点数 | {"x":12.6} {"y":12} | shell中的数字都是这种类型 |
字符串 | {"x":"personaliinfo"} | UTF-8字符串都可以表示为字符串类型的数据 |
符号 | Shell不支持这种类型。Shell将数据库中的符号类型转换为字符串 | |
对象Id | {"x":objectId()} | 对象id是文档的12字节的唯一ID |
日期 | {"x":newDate()} | 日期类型存储的是从标准纪元开始的毫秒数,不存储时区 |
正则表达式 | {"x":/personaliinfo/i} | 文档中可以包含正则表达式,采用正则表达式的语法 |
代码 | {"x":function(){...}} | 文档中可以包含JavaScript代码 |
二进制数据 | 二进制数据可以由任意字节的串组成,在Shell中无法使用 | |
最大值 | BSON包含一个特殊类型,表示可能的最大值,Shell中没有 | |
最小值 | BSON包含一个特殊类型,表示可能的最小值,Shell中没有 | |
未定义 | {"x":undefined} | 文档中可以使用未定义类型(javascript中null和undefined是不同的类型) |
数组 | {"x"["a","b","c"]} | 值得集合或者列表可以表示成数组 |
内嵌文档 | {"x":{"name":"h"}} | 文档中可以嵌入其它文档 |