mongotranslate
MongoDB工具 >MongoDB BI连接器 >参考 > 类型转换模式
在本页面
2.6版的新功能。
用于BI的MongoDB连接器尝试将SQL查询转换为MongoDB
聚合管道。当BI Connector无法将查询转换为聚合管道时,它将在内存中执行查询,从而导致延迟增加。在2.6版之前,mongosqld
无法将类型转换转换为聚合表达式,从而阻止了任何依赖类型转换的查询的转换。
从2.6版开始,mongosql
类型转换模式将所有类型转换下推至运行4.0版或更高版本的MongoDB服务器,以提高表达式性能。默认情况下启用此模式,但是您可以通过将会话type_conversion_mode
变量设置为以下值之一来针对每个会话进行配置
:
模式 | 描述 |
---|---|
mongosql |
默认。将所有类型转换下推到运行版本4.0或更高版本的MongoDB服务器。对于4.0之前的MongoDB版本,BI连接器在内存中执行类型转换。 |
mysql |
指示BI Connector尽可能匹配MySQL的类型转换语义。如果BI Connector可以用聚合语言重现MySQL的类型转换行为,它将把表达式下推到MongoDB服务器上执行。否则,mongosqld 在内存中执行表达式。 |
以下示例将type_conversion_mode
变量设置为
mysql
:
重要
mongosql
除非您需要紧密复制MySQL的行为,否则建议使用类型转换模式。上面的示例设置mysql
类型转换模式,因为mongosql
它是默认设置,不需要显式设置。
类型转换模式适用于以下两种情况:
显式类型转换。例如:
隐式类型转换。例如,"123" + 456
下表概述了MySQL的类型转换行为与BI Connector的默认类型转换行为(mongosql
模式)如何不同:
从类型 | 输入 | MySQL行为 | mongosql 模式行为 |
---|---|---|---|
Varchar | 数字 | 从字符串以多种不同格式解析数字。有关更多信息,请参见MySQL Numeric Literals 文档。 | 从十进制格式的字符串中解析数字,并带有可选的前导符号字符。 |
Varchar | 时间戳记 | 从字符串中以各种不同的格式解析日期。有关更多信息,请参见MySQL 日期和时间文字。 | 从"%Y-%m-%dT%H:%M:%S.%LZ"
格式的字符串中解析日期。 |
整数 | 时间戳记 | 尝试从int的varchar表示形式解析日期。例如,整数20180809183456 变为date
。2018-08-09 18:34:56.000000 |
将输入视为从unix纪元以来的毫秒数。例如,1533839696000 。 |
时间戳记 | 长 | 将时间戳解析为长YYYYMMDDHHMMSS 格式。例如,20180701123400 。 |
将时间戳解析为代表从unix纪元以来的毫秒数的长整数。例如,1530448440000 。 |
时间戳记 | Varchar | 将时间戳解析为varchar
格式。例如,
。YYYY-MM-DD HH:MM:SS.MMMMMM “2018-07-01 12:34:00.000000” |
将时间戳解析为varchar
YYYY-MM-DDTHH:MM:SS:MMMZ 格式。例如,
“2018-07-01T12:34:00.000Z” 。 |
注意
mongosql
除非必须紧密复制MySQL的行为,否则建议使用类型转换模式。