Skip to content

MongoDB - 数据类型

MongoDB 以 BSON (Binary JSON,二进制 JSON) 格式存储数据,它支持比 JSON 更广泛的数据类型。理解这些类型对于有效的数据建模至关重要。以下是最重要的几种:

  • String(字符串):最常见的数据类型。BSON 字符串是 UTF-8 编码的。通常,每种编程语言的驱动程序会自动将该语言的字符串格式转换为 UTF-8。
  • Double(双精度浮点数):一个 64 位浮点数。这是存储小数值的标准类型。除非需要任意精度,否则用于大多数数值数据。
  • Boolean(布尔值):存储 true 或 false 值。
  • Object ID(对象ID):_id 字段的默认类型。它是一个 12 字节的唯一标识符,通过时间戳、机器 ID、进程 ID 和一个计数器生成。它旨在分布式系统中保持唯一性。
  • Date(日期):将当前日期或时间存储为自 Unix 纪元(1970 年 1 月 1 日)以来的毫秒数,以 64 位整数表示。它支持时区。始终以 UTC 存储时间。
  • Array(数组):用于在一个键中存储列表或多个值。数组中的元素可以是任何 BSON 数据类型,包括其他数组和文档。
  • Object(对象):用于嵌入式文档。这使得在一个父文档中可以实现复杂的嵌套数据结构,这是 MongoDB 文档模型的一个关键特性。
  • 32 位整数 (Int32):存储整数值。如果您运行的是 32 位版本的 MongoDB,这将是默认的整数类型。
  • 64 位整数 (Int64):存储更大的整数值。在 64 位版本的 MongoDB 中可用。驱动程序通常会处理从您语言的标准整数类型到此类型的转换。
  • Decimal128:一个 128 位基于十进制的浮点数,能够精确模拟十进制舍入。对于金融、科学和其他对精度要求严格且不允许浮点舍入误差的计算至关重要。
  • Null(空值):存储 null 值或表示字段缺失。
  • Binary Data(二进制数据):用于存储图像、音频文件或任何非文本数据等二进制数据。通常,最好使用 Amazon S3 等专用文件存储服务,并在 MongoDB 中存储链接,但此类型可用于较小的二进制大对象 (blob)。
  • Regular Expression(正则表达式):允许直接在 BSON 中存储正则表达式,这可以在查询中用于对字符串执行高级模式匹配。
  • BSON Timestamp(BSON 时间戳):一个特殊的 64 位值,由 MongoDB 内部用于复制 (replication) 和分片 (sharding)。它不用于存储应用程序级别的日期和时间;为此目的应使用 Date 类型。
  • Code(代码):可以存储 JavaScript 代码字符串。注意:在现代应用程序中,通常不建议执行数据库端 JavaScript(特定服务器端函数除外),因为这会带来性能、复杂性和安全问题。请将您的业务逻辑保留在应用程序层。
  • Symbol(符号):(已弃用) 此类型类似于字符串,但专用于具有特定符号类型的语言。它已基本弃用,应避免使用,而改用字符串。