《MongoDB入门教程》第05篇 MongoDB数据类型
Posted 不剪发的Tony老师
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《MongoDB入门教程》第05篇 MongoDB数据类型相关的知识,希望对你有一定的参考价值。
本文将会介绍 MongoDB 中最常用的一些数据类型。
空类型
null 类型用于表示空值(null)和不存在的字段值。例如:
"isbn": null
布尔类型
boolean 类型包含两个值:true 和 false。例如:
"best_seller": true
数字类型
默认情况下,mongo shell 使用 64 位浮点数。例如:
"price": 9.95,
"pages": 851
NumberInt 和 NumberLong 类分别表示 4 字节和 8 字节整数。例如:
"year": NumberInt("2020"),
"words": NumberLong("95403")
字符串类型
string 类型表示 UTF-8 字符组成的字符串。例如:
"title": "MongDB Data Types"
日期类型
date 类型以 8 字节整数存储了 Unix 纪元(1970 年 1 月 1 日)以来的毫秒数,不包含时区。例如:
"updated_at": new Date()
在 javascript 中,Date 类用于表示 MongoDB 中的日期类型。
注意,创建 Date 对象时需要调用 new Date(),而不仅仅是 Date(),因为 Date() 返回的是日期字符串而不是 Date 对象。
mongo shell 使用本地时区设置显示日期,但是 MongoDB 不会存储日期中的时区信息。如果想要存储时区,可以使用额外的字段,例如 timezone。
正则表达式
MongoDB 支持存储 JavaScript 正则表达式(regular expression),例如:
"pattern": /\\d+/
示例中的 /\\d+/ 是一个正则表达式,用于匹配一个或多个十进制数字。
数组类型
array 类型可以存储由任何类型的数据组成的列表。列表中每个值得类型可以不同,例如:
"title": "MongoDB Array",
"reviews": ["John", 3.5, "Jane", 5]
MongoDB 可以理解文档中得数组结构,支持基于数组元素的操作。例如,我们可以查找 reviews 数组中包含元素值为 5 所有文档。另外,我们还可以基于 reviews 数组创建一个索引,提高查询的性能。
嵌入式文档
文档中的字段可以是另一个文档,即嵌入式文档(embedded document)。
以下是一个 book 文档,包含了一个嵌入的 author 文档:
"title": "MongoDB Tutorial",
"pages": 945,
"author":
"first_name": "John",
"last_name": "Doe"
示例中的 author 文档拥有它自己的键值对,包括 first_name 和 last_name。
对象ID
在 MongoDB 中,每个文档都有一个“_id”键。“_id”键的值可以是任何类型,但是它默认为一个 ObjectId。
同一个集合中,每个“_id”键的值必须唯一,MongoDB 使用它标识集合中的每个文档。
ObjectId 类是“_id”键的默认类型,它可以产生跨服务器的全局唯一值。因为 MongoDB 原生支持分布式,在共享环境中确保标识符唯一很重要。
ObjectId 占用 12 字节存储,每个字节以 2 个十六进制数字表示,因此 ObjectId 包含 24 个十六进制数字。
12 字节 ObjectId 值包含以下内容:
- 4 字节的时间戳,表示 ObjectId 的产生时间,数值为 Unix 纪元以来的秒数。
- 5 字节的随机值。
- 3 字节的增量计数器,使用随机数进行初始化。
ObjectId 前面 9 字节可以确保跨服务器和进程每秒钟的唯一性,最后 3 个字节可以确保每个进程每秒钟内的唯一性。因此,单个进程每秒钟可以产生 2563(16,777,216)个唯一 ObjectId。
如果我们插入文档时没有指定“_id”键的值,MongoDB 会自动为文档生成一个唯一 id。例如:
db.books.insertOne(
"title": "SQL编程思想"
);
Code language: JavaScript (javascript)
Output:
"acknowledged" : true,
"insertedId" : ObjectId("62bb0962874071c64b1f9b7b")
MongoDB 生成了一个值为 ObjectId(“62bb0962874071c64b1f9b7b”) 的唯一 id。我们可以查看插入的文档:
db.books.find().pretty()
"_id" : ObjectId("62bb0962874071c64b1f9b7b"),
"title" : "SQL编程思想",
"published_year" : 2021
以上是关于《MongoDB入门教程》第05篇 MongoDB数据类型的主要内容,如果未能解决你的问题,请参考以下文章