Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs 菜单
Docs 主页
/ /

数据类型转换参考

本页概述的示例显示了使用自定义字段将源值和数据类型转换为特定 BSON 数据类型的结果。

  • 迁移作业错误会导致受影响字段的 BsonNull 值。 字段的 null 处理策略不会影响此行为。

  • 除非达到您在创建迁移作业时定义的阈值,否则迁移作业将继续但出现错误。

  • 定义 计算字段和自定义ID字段时, Relational Migrator显示初始数据类型default 。当您运行迁移作业时, Relational Migrator会更新此数据类型。

以下示例显示了对具有Integer数据类型的值100应用数据类型自定义的结果。

转换类型
转化价值

Boolean

false

Date

Thu Jan 01 10:00:00 AEST 1970

Decimal

100.0

Double

100.0

Integer

100

Long

100

String

100

以下示例显示了对具有Boolean数据类型的值true应用数据类型自定义的结果。

转换类型
转化价值

Boolean

true

Date

Thu Jan 01 10:00:00 AEST 1970

Decimal

1.0

Double

1.0

Integer

1

Long

1

String

"true"

以下示例显示了对具有Long数据类型的值1233140483647应用数据类型自定义的结果。

转换类型
转化价值

Boolean

false

Date

Wed Jan 28 22:01:23 AEDT 2009

Decimal

1233140483647.0

Double

1233140483647.0

Integer

Error (Too big)

Long

1233140483647

String

"1233140483647"

以下示例显示了对具有Decimal数据类型的值26.55应用数据类型自定义的结果。

转换类型
转化价值

Boolean

false

Date

Error

Decimal

26.55

Double

26.55

Integer

26

Long

26

String

"26.55"

以下示例显示了对具有String数据类型的值"Hello"应用数据类型自定义的结果。

转换类型
转化价值

Boolean

false

Date

Error

Decimal

Error

Double

Error

Integer

Error

Long

Error

String

"Hello"

以下示例显示了对具有String数据类型的值"true"应用数据类型自定义的结果。

转换类型
转化价值

Boolean

true

Date

Error

Decimal

Error

Double

Error

Integer

Error

Long

Error

String

"true"

Oracle TIMESTAMP(0-9) 列支持以下 BSON 类型选项。该示例使用带有 TIMESTAMP(9)数据类型的源值 2025-01-01 12:34:56.123456789

BSON 类型
行为
示例输出

Date (默认)

截断到毫秒精度。对于 TIMESTAMP(0-3),不会发生精度损失。

2025-01-01T12:34:56.123Z

String

将完整的亚毫秒精度保留为字符串。

"2025-01-01 12:34:56.123456789Z"

Long (milliseconds)

将自 Unix 纪元以来的毫秒数存储为 Int64。

1735734896123

Long (microseconds)

将以 Unix 纪元以来的微秒数存储为 Int64。

1735734896123456

Long (nanoseconds)

将自 Unix 纪元以来的纳秒存储为 Int64。

1735734896123456789

Oracle TIMESTAMP WITH TIME ZONE 列支持以下 BSON 类型选项。该示例使用源值 2025-01-01 12:34:00.000 -05:00

注意

在 1.15.4 之前的版本中,为 TIMESTAMP WITH TIME ZONE 列选择 Date 会存储本地时间,而不转换为 UTC。更新的 Date (UTC) 选项使用原始时区域偏移将时间戳转换为 UTC。

BSON 类型
行为
示例输出

String (默认)

将包括时区域偏移在内的完整时间戳存储为字符串。

"2025-01-01 12:34:00.000 -05:00"

Date (UTC)

使用原始时区域偏移将时间戳转换为 UTC。

2025-01-01T17:34:00.000Z

Date (Strip Time Zone)

以 UTC 格式按原样存储本地挂钟时间,忽略时区域偏移。

2025-01-01T12:34:00.000Z

Date and String (Separate fields)

创建两个子字段:timestamp(BSON日期)和 timeZone(BSON字符串)。

{ timestamp: 2025-01-01T12:34:00Z, timeZone: "-05:00" }

Long (milliseconds)

将自 UTC 等效时间以来的毫秒数存储为 Int64。

1735752840000

Long (microseconds)

将自 UTC 等效时间以来的微秒数存储为 Int64。

1735752840000000

Long (nanoseconds)

将自 UTC 等效时间以来的纳秒存储为 Int64。

1735752840000000000

Oracle NUMBER 列支持以下 BSON 类型选项。默认BSON类型取决于列的扩展(s) 和整数精度 (p - s):

  • s > 0: Decimal(十进制128)

  • s <= 0(p - s) < 10Integer (BsonInt32)

  • s <= 010 <= (p - s) < 19Long (BsonInt64)

  • s <= 0(p - s) >= 19Decimal(十进制128)

该示例使用源值 123456789

BSON 类型
行为
示例输出

Bool

将 0 视为 false,并将任何非零数值视为 true。

true

Date

将 NUMBER 解释为自 Unix 纪元以来的毫秒数 (1970-01-01T00:00:00Z)。过大的值可能会溢出并产生无效的日期。

1970-01-02T10:17:36.789+00:00

Decimal

映射到BSON十进制128。有效数字超过 34 的值可能会失去精度。

123456789

Double

转换为BSON Double(64 位点)。由于 IEEE 754 舍入,大值或高精度值可能会损失精度。

123456789

Integer

映射到BSON Int32。超过 Int32范围的值会导致错误。

123456789

Long

映射到BSON Int64。超过 Int64范围的值会导致错误。

123456789

String

将所有数字保留为字符串。在需要完整数字保真度时使用。

"123456789"

当源值超过 34 个有效数字时,Decimal 映射可能会丢失精度。以下示例使用源值 12345678901234567890123456789012345678(38 位有效数字)。

BSON 类型
行为
示例输出

Decimal

有效数字超过 34 的值可能会失去精度。

1.234567890123456789012345678901234E+37

String

将所有数字保留为字符串。在需要完整数字保真度时使用。

"12345678901234567890123456789012345678"

Relational Migrator将Oracle XMLTYPE 列映射到BSON String,将 XML文档存储为字符串值。

注意

要迁移XMLTYPE 列,请确保 xdb.jar Oracle JDBC驱动程序文件可用。

后退

自定义字段

在此页面上