MongoDB笔记一之数据类型

数据类型

基本数据类型

null
null 用于表示空值或者不存在的字段:
{“x” : null}

布尔型

布尔类型有两个值true 和false:
{“x” : true}

数值

shell 默认使用64 位浮点型数值。因此,以下数值在shell 中是很“正常”的:
{“x” : 3.14}
或:
{“x” : 3}
对于整型值,可使用NumberInt 类(表示4 字节带符号整数)或NumberLong
类(表示8 字符带符号整数),分别举例如下:
{“x” : NumberInt(“3”)}
{“x” : NumberLong(“3”)}

字符串

UTF-8 字符串都可表示为字符串类型的数据:
{“x” : “foobar”}

正则表达式

查询时,使用正则表达式作为限定条件,语法也与JavaScript 的正则表达式语法
相同:
{“x” : /foobar/i}
.

数组

数据列表或数据集可以表示为数组:
{“x” : [“a”, “b”, “c”]}
.

内嵌文档

文档可嵌套其他文档,被嵌套的文档作为父文档的值:
{“x” : {“foo” : “bar”}}
.

对象id

对象id 是一个12 字节的ID,是文档的唯一标识。详见2.6.5 节。
{“x” : ObjectId()}
_id和ObjectId.

ObjectId

ObjectId 是”_id” 的默认类型。它设计成轻量型的,不同的机器都能用全局唯一
的同种方法方便地生成它。这是 MongoDB 采用ObjectId,而不是其他比较常规
的做法(比如自动增加的主键)的主要原因,因为在多个服务器上同步自动增加主
键值既费力又费时。因为设计MongoDB 的初衷就是用作分布式数据库,所以能够
在分片环境中生成唯一的标示符非常重要。
ObjectId 使用12 字节的存储空间,是一个由24 个十六进制数字组成的字符串
(每个字节可以存储两个十六进制数字)。由于看起来很长,不少人会觉得难以处理。
但关键是要知道这个长长的ObjectId 是实际存储数据的两倍长。
如果快速连续创建多个ObjectId,会发现每次只有最后几位数字有变化。另外,
中间的几位数字也会变化(要是在创建的过程中停顿几秒钟)。这是ObjectId 的创
建方式导致的。ObjectId 的12 字节按照如下方式生成:
0 1 2 3 4 5 6 7 8 9 10 11
时间戳机器PID 计数器
ObjectId 的前4 个字节是从标准纪元开始的时间戳,单位为秒。这会带来一些有
用的属性。

自动生成_id

前面讲到,如果插入文档时没有”_id” 键,系统会自动帮你创建一个。可以由
MongoDB 服务器来做这件事,但通常会在客户端由驱动程序完成。这一做法非常
好地体现了MongoDB 的哲学:能交给客户端驱动程序来做的事情就不要交给服务
器来做。这种理念背后的原因是,即便是像MongoDB 这样扩展性非常好的数据库,
扩展应用层也要比扩展数据库层容易得多。将工作交由客户端来处理,就减轻了数
据库扩展的负担。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值