您的位置:首页 > 数据库 > Mongodb

《MongoDB权威指南》学习整理----MongoDB中的基本数据类型

2014-02-19 16:42 344 查看

MongoDB数据类型介绍

monggoDB中的数据都存储在文档中,传输、存储方式使用了类似于JSON称为BSON的数据格式,但数据类型更加丰富,下面对mongodb中的数据类型以及类型在shell中的处理进行说明:

Null
用于表示空或者不存在的数据。例如:{'x':null}

Boolean
通用的布尔类型,true或者false.例如:{'x':false}

32位整数
在shell中没有此类型,java中有interger。shell会自动转换该类型为64位整数。

64位整数
shell中没有此类型,shell使用一个特殊的内嵌文档来表示64位整数。此类型的数据在shell中查看的时候,当可以正确的使用64位浮点数表示时,就直接使用数字表示;如果不能使用64位浮点数正确表示,mongodb的内嵌文档会表示此数据。例如9223372036854775807在shell中的表示为:

db.nums.findOne()

{

"_id":ObjectId("xxxxxxxxx"),

"myInteger":{

"floatApprox":9223372036854775807,

"top":2147483647,

"bottom":4294967295

}

}

注意,如果用shell编辑更改后,该数字会变成64位浮点数。

64位浮点数
shell中所有的数字都是该类型。由于shell中只支持此类型而mongoDB支持3中数字类型,那么当mongodb中的32/64位整数在shell中操作后,使用shell再次存入到mongodb中时,所有的数据类型都会转化为64位浮点数。所以最好不要轻易的在shell中对数字进行修改操作。

字符串
最常见的数据类型之一。

符号
shell中不支持该类型,会自动转化为字符串

对象id
对象id是文档的12字节的唯一ID。每个集合中只能有唯一的objectId。12字节的意义:

前4字节是从标准纪元开始的时间戳,4-6字节表示机器名的散列值,7、8字节表示进程ID,后边3个字节表示计数器

日期
日期类型存储的是从标准纪元开始的毫秒数,没有时区。使用new Date('xxxx')来创建日期对象,而不是Date('xxxx')。同时,在mongoDB中存储的日期类型是没有时区的,如果需要,添加一个新的键来表示时区。

正则表达式
与JS中的正则表达式相同。

代码
文档中可以保存JS代码。

二进制数据
可以任意存储二进制数据,但是在shell中无法使用

最大值
文档中的特殊类型,shell中无法使用。

最小值
文档中的特殊类型,shell无法使用。

未定义
也就是JS中的undefined,注意,和JS中一样null和undefined是不一样的。

数组
值的集合或者列表可以表示成数组,如同所有的弱类型语言,python、php、js,数组元素可以是不同类型的对象。例如:{'x':['a','b','c']}

内嵌文档
文档可以包含别的文档,也可以作为值嵌入到父文档中。例如:{'x':{'foo':'bar'}}

不同数据类型的比较

由于MongoDB中不同文档的同一个key的value数据类型可以不同,当我们根据某个key查询的时候会发生不同数据类型之间的比较。所以MongoDB内部设定了数据类型间的大小,顺序如下:
最小值<null<数字(32位整数、63位整形、64位浮点数)<字符串<对象/文档<数组<二进制数据<对象ID<布尔型<日期型<时间戳<正则<最大值
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息