$cast

    转换关系如下:

    • MinKey

    源类型转换格式备注异常返回ALL任何类型都能转换成MinKey无

    • Double

    源类型转换格式备注异常返回String将数字字符串转换为Double类型对应的数字0.0Booltrue: 1.0;false: 0.0无Int32将Int32类型的数字强转为Double类型对应的数字无Int64将Int64类型的数字强转为Double类型对应的数字无Decimal将Decimal类型的数字强转为Double类型对应的数字0.0Timestamp将Timestamp类型的值表示的绝对毫秒转为Double类型的数字无Date将Date类型的值表示的绝对毫秒转为Double类型的数字无

    • String

    源类型转换格式备注异常返回Int32将Int32类型的数字转换为字符串无Int64将Int64类型的数字转换为字符串无Double将Double类型的数字转换为字符串无Decimal将Decimal类型的数字转换为字符串无Date将Date类型的内容转换为字符串无Timestamp将Timestamp类型的内容转换为字符串无ObjectId将ObjectId类型的内容转换为字符串无Object将Object类型的内容转换为Json格式的字符串无Array将数组中每个元素都转换为对应内容的字符串无Bool将Bool类型的内容转换为字符串无

    • Object

    源类型转换格式备注异常返回String将标准Json字符串转为Object类型null

    源类型转换格式备注异常返回String将由24个16进制字符组成的字符串(带字符串结束符共25个字符)转为ObjectId类型null

    • Bool

    源类型转换格式备注异常返回Int32Int32类型的数值为0表示false, 其他表示true无Int64Int64类型的数值为0表示false, 其他表示true无DoubleDouble类型的数值为0表示false, 其他表示true无DecimalDecimal类型的数值为0表示false, 其他表示true无

    • Date

    源类型转换格式备注异常返回Int32Int32类型的数字理解为绝对秒数。将绝对秒数转换为Date类型对应的时间无Int64Int64类型的数字理解为绝对毫秒。将绝对毫秒转换为Date类型对应的时间无DoubleDouble类型的数字理解为绝对毫秒。将绝对毫秒转换为Date类型对应的时间无DecimalDecimal类型的数字理解为绝对毫秒。将绝对毫秒转换为Date类型对应的时间nullString将形如“2015-08-19”格式的字符串转换为Date类型对应的时间,支持范围为["0000-01-01","9999-12-31"]nullTimestamp将Timestamp类型的日期部分转换为Date类型对应的时间无

    Note:1. 绝对秒数:距离格林威治时间1970年01月01日00时00分00秒的总秒数。当Int32类型的值为负数时,转换结果为该时间点之前的Date类型的值,如:1969-12-31。2. 绝对毫秒:距离格林威治时间1970年01月01日00时00分00秒的总毫秒数。当Int64类型的值为负数时,转换结果为该时间点之前的Date类型的值,如:1969-12-31。3. 将Double/Decimal类型的转为Date类型,可能会发生精度丢失。因为转换过程是先由Double/Decimal类型转为Int64类型(此处可能发生精度丢失),然后再将Int64类型表示的绝对毫秒转换为Date类型对应的时间。4. 当Decimal类型的值超出Int64类型范围时,转换将异常返回null。5. 将不在["0000-01-01","9999-12-31"]范围的字符串日期转换为Date类型,转换将异常返回null。

    • Null

    源类型转换格式备注异常返回ALL任何类型都能转换成Null无

    • Int32
    • Timestamp

    源类型转换格式备注异常返回Int32Int32类型的数字理解为绝对秒数。将绝对秒数转换为Timestamp类型对应的时间无Int64Int64类型的数字理解为绝对毫秒。将绝对毫秒转换为Timestamp类型对应的时间nullDoubleDouble类型的数字理解为绝对毫秒。将Double类型的值强转为Int64类型的值,再将绝对毫秒转换为Timestamp类型对应的时间nullDecimalDouble类型的数字理解为绝对毫秒。将Decimal类型的值强转为Int64类型的值,再将绝对毫秒转换为Timestamp类型对应的时间nullString将形如“2015-08-19-17.59.05.918488”格式的字符串转换为Timestamp类型,支持范围为["1902-01-01 00:00:00.000000", "2037-12-31 23:59:59.999999"]nullDate将Date类型的内容转换为Timestamp类型对应的时间null

    Note:1. 由于Int64/Double/Decimal类型表示的绝对毫秒能表示的时间范围比Timestamp类型的广,在这些类型转为Timestamp类型过程, 若转换结果超出Timestamp类型能表示的范围,转换将异常返回null。2. 由于Date类型能表示的时间范围比Timestamp类型的广,在Date类型转为Timestamp类型过程, 若转换结果超出Timestamp类型能表示的范围,转换将异常返回null。

    • Int64

    源类型转换格式备注异常返回String将数字字符串转换为In64类型对应的数字0Booltrue:1;false:0无Int32将Int32类型的值转为Int64类型的数字无Double将Double类型的值转为Int64类型的数字无Decimal将Decimal类型的值转为Int64类型的数字0Timestamp将Timestamp类型的值表示的绝对毫秒转为Int64类型的数字无Date将Date类型的值表示的绝对毫秒转为Int64类型的数字无

    • Decimal

    源类型转换格式备注异常返回String将数字字符串转换为Decimal类型对应的数字0Booltrue: 1, false: 0无Int32将Int32类型的值转为Decimal类型对应的数字无Int64将Int64类型的值转为Decimal类型对应的数字无Double将Double类型的值转为Decimal类型对应的数字无Timestamp将Timestamp类型的值表示的绝对毫秒转为Decimal类型对应的数字无Date将Date类型的值表示的绝对毫秒转为Decimal类型对应的数字无

    1. 将非数字字符串转为Decimal类型,转换将异常返回0。
    2. 将超过Decimal类型范围的数字字符串转为Decimal类型,转换将异常返回0。
    • MaxKey

    源类型转换格式备注异常返回ALL任何类型都能转换成MaxKey无

    • 集合 foo.bar 存在如下记录:
    • “$cast”单独作为选择符使用。返回字段“a”转换“int32”类型之后的记录如下:

    该查询返回原始记录,字段“a”的值是字符串类型。