《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数据类型的主要内容,如果未能解决你的问题,请参考以下文章

《MongoDB入门教程》第05篇 MongoDB数据类型

《MongoDB入门教程》第01篇 MongoDB简介

《MongoDB入门教程》第02篇 MongoDB安装

《MongoDB入门教程》第02篇 MongoDB安装

《MongoDB入门教程》第04篇 MongoDB客户端

《MongoDB入门教程》第04篇 MongoDB客户端