MongoDB 数据类型(第 5 天)
在阅读本文之前,我强烈建议您阅读本系列的前几期:
- MongoDB – 第 1 天(MongoDB 简介)
- MongoDB – 第 2 天(在 Windows 中安装 MongoDB)
- MongoDB – 第 3 天(数据库基础知识)
- MongoDB – 第 4 天(收集基础)
MongoDB 以称为 BSON 的二进制编码格式存储 JSON 文档。BSON 扩展了 JSON 模型以提供额外的数据类型,并在各种语言中高效地进行编码和解码。它增加了对 JSON 不支持的数据类型的支持,例如日期和二进制。BSON 是一种二进制序列化格式,用于在 MongoDB 中存储文档和进行远程过程调用。
MongoDB 支持以下数据类型。每种数据类型都有相应的编号。$type 方法使用其对应的数字标识数据类型。
Data Type | Number |
Double | 1 |
String | 2 |
Object | 3 |
Array | 4 |
Binary Data | 5 |
Undefined | 6 |
Object Id | 7 |
Boolean | 9 |
Date | 10 |
Null | 11 |
Regular Expression | 12 |
JavaScript | 13 |
Symbol | 14 |
JavaScript with scope | 15 |
Integer | 16 and 18 |
Timestamp | 10 |
Min Key | 255 |
Max Key | 127 |
现在,我们将通过示例学习一些基本的数据类型。
Double
Double 数据类型存储浮点值。
例子
在上面的例子中,我们创建了一个float类型的变量(double_),在这个变量中插入了一个float类型的值,最后打印了这个变量的值。
String
String 是最常用的数据类型。它包含一串文本或任何其他类型的字符。BSON 字符串是 UTF-8。通常,在序列化和反序列化 BSON 时,每种编程语言的驱动程序都会从语言字符串格式转换为 UTF-8。如果字符串无效,则不会保存。这使得在 BSON 字符串中存储大多数国际字符成为可能。
例子
对象
这种数据类型存储嵌入的文档。当一个文档以键值对的形式包含另一个文档时,这种类型的文档被称为嵌入文档。
例子
Array
Array 数据类型存储数组。Array 类型可以存储多种数据类型(Integer、Double、Date、String 等)的多个值。
例子
二进制数据
Binary 数据类型存储二进制数据。
例子
在前面的示例中,BinData 是二进制字符串的 base64 表示。
ObjectId
ObjectId 数据类型存储文档的 ID。ObjectId 是:小,可能是唯一的,快速生成和排序。ObjectId 的大小为 12 字节。这 12 个字节分为以下 4 个部分。
Part Name | Size(Bytes) |
Time Stamp | 4 |
Machine Id | 3 |
Process Id | 2 |
Counter | 3 |
MongoDB 为每个文档使用一个 _id 字段来唯一标识它们。这个 _id 字段是一个主要的东西。它不能是重复的。数据以十六进制格式存储在 _id 字段中。
例子
Boolean
这种类型存储一个布尔值。此数据类型可以设置为 true 或 false。
例子
Date
此数据类型以 UNIX 时间格式存储当前日期或时间。MongoDB 提供了各种方法来返回日期,可以是字符串,也可以是 Date 对象。
日期方法 | 描述 |
Date() | 以字符串形式返回当前日期。 |
new Date() | 使用 ISODate() 包装器返回一个 Date 对象。 |
ISODate() | 使用 ISODate() 包装器返回一个 Date 对象。 |
我们可以通过创建 Date 对象并将日、月和年传递给它来指定您自己的日期时间。日期对象存储为表示毫秒数的 64 位整数。
例子
Null
Null 数据类型存储一个 Null 值。
例子
Integer
Integer 数据类型存储整数(数值)值。整数数据类型有 32 位和 64 位两种形式。整数可以是 32 位或 64 位,具体取决于服务器。
例子
Timestamp
Timestamp 数据类型存储时间戳。这对于在修改或添加文档时进行记录非常有用。时间戳值是 64 位值。
- 前 32 位是 time_t 值(自 Unix 纪元以来的秒数)
- 第二个 32 位是给定秒内操作的递增序数。
让我们看一个例子。
示例1
在前面的示例中,我们可以看到Timestamp 的起始值为(0,0)。插入操作后,时间戳的值为(1438791098,1)。时间戳的第一个值是当前时间戳,第二个值是操作顺序。
示例 2
MongoDB 将当前时间戳存储在 ObjectId 中,但我们可以使用 getTimestamp() 方法检索此时间戳。
首先,我们将一个文档插入到集合中,然后我们检查 Timestamp 的值。
现在,我们更新一条记录并再次检查时间戳的值。
Min/Max keys
Min/Max 键将值与最低和最高 BSON 元素进行比较。Min 和 Max 键都是内部数据类型。在比较不同BSON类型的值时,MongoDB使用以下从低到高的比较顺序:
- MinKey
- Null
- Numbers (ints, longs, doubles)
- Symbol, String
- Object
- Array
- BinData
- ObjectId
- Boolean
- Date
- Timestamp
- Regular Expression
- MaxKey
示例:
现在我们将另一个文档插入到集合中,然后对结果进行排序并检查输出:
正则表达式
正则表达式数据类型存储正则表达式。
例子
Undefined
Undefined 数据类型存储未定义的值。
例子
Symbol
Symbol 数据类型类似于字符串数据类型。Symbol 主要是为使用特定符号的语言保留的。
例子
JavaScript
JavaScript 数据类型存储没有作用域的 JavaScript 数据。
例子
带有作用域的 JavaScript
这种数据类型存储带有作用域选项的 JavaScript 数据。
例子
本文讲解了MongoDB的基本数据类型。在下一篇文章中,我们将了解 CRUD 操作。
常见问题FAQ
- 程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
- 请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!