CQL(Cassandra Query Language)JSON支持

Cassandra 2.2引入了对SELECT和INSERT语句的JSON支持。此支持不会从根本上改变CQL API(例如,模式仍然被强制执行),它只是提供一种方便的方式来处理JSON文档。

SELECT JSON

使用SELECT语句,JSON关键字可用于将每行返回为单个JSON编码映射。SELECT语句行为的其余部分是相同的。

结果映射键与正常结果集中的列名称相同。 例如,像SELECT JSON a,ttl(b)FROM ...这样的语句将导致具有键“a”“ttl(b)”的映射。但是,这是一个值得注意的例外:对于具有INSERT JSON行为的对称性,具有大写字母的区分大小写的列名称将用双引号括起来。例如,SELECT JSON myColumn FROM ...将导致一个映射键“\”myColumn \“”(注意转义的引号)。

映射值将使用结果集值的JSON编码表示(如下所述)。

INSERT JSON

使用INSERT语句,新的JSON关键字可用于启用将JSON编码映射插入单行。JSON映射的格式通常应与由相同表上的SELECT JSON语句返回的格式相匹配。特别是,区分大小写的列名称应该用双引号括起来。 例如,要插入具有两个名为“myKey”和“value”的列的表,您将执行以下操作:

INSERT INTO mytable JSON '{ "\"myKey\"": 0, "value": 0}'

默认情况下(或如果显式使用DEFAULT NULL),从JSON映射中省略的列将被设置为NULL,这意味着该列的任何预先存在的值将被删除(导致创建逻辑删除)。或者,如果在值之后使用DEFAULT UNSET伪指令,忽略的列值将保留未设置,这意味着将保留那些列的预先存在的值。

Cassandra数据类型的JSON编码

在可能的情况下,Cassandra将以其原生JSON表示形式表示和接受数据类型。Cassandra还将接受与所有单字段类型的CQL字面量格式匹配的字符串表示。例如,浮动,整数,UUID和日期可以由CQL字面量字符串表示。但是,复合类型(例如集合,元组和用户定义的类型)必须由本地JSON集合(mao和list)或集合的JSON编码字符串表示形式表示。

下表描述了Cassandra在INSERT JSON值(和fromJson()参数)中接受的编码以及Cassandra在为SELECT JSON语句(和fromJson())返回数据时使用的格式:

类型接受格式返回格式注意点
asciistringstring使用JSON的\ u字符转义
bigintinteger, stringinteger字符串必须是有效的64位整数
blobstringstring字符串应为0x,后跟偶数个十六进制数字
booleanboolean, stringboolean字符串必须为“true”或“false”
datestringstring日期格式为YYYY-MM-DD,时区UTC
decimalinteger, float, stringfloat在客户端解码器中可能超过32或64位IEEE-754浮点精度
doubleinteger, float, stringfloat字符串必须是有效的整数或浮点型
floatinteger, float, stringfloat字符串必须是有效的整数或浮点型
inetstringstringIPv4或IPv6地址
intinteger, stringinteger字符串必须是有效的32位整数
listlist, stringlist使用JSON的本地列表表示
mapmap, stringmap使用JSON的本地映射表示
smallintinteger, stringinteger字符串必须是有效的16位整数
setlist, stringlist使用JSON的本地列表表示
textstringstring使用JSON的\ u字符转义
timestringstring时间格式HH-MM-SS [.fffffffff]
timestampinteger, stringstring时间戳。 字符串常量允许输入时间戳日期。返回格式为YYYY-MM-DDHH:MM:SS.SSS的日期戳。
timeuuidstringstring类型1 UUID。 请参阅UUID格式的常量
tinyintinteger, stringinteger字符串必须是有效的8位整数
tuplelist, stringlist使用JSON的本地列表表示
UDTmap, stringmap使用JSON的本地映射表示,其中字段名称为键
uuidstringstring请参阅UUID格式的常量
varcharstringstring使用JSON的\ u字符转义
varintinteger, stringinteger可变长度; 可能在客户端解码器中溢出32或64位整数

fromJson()函数

fromJson()函数可以类似于INSERT JSON使用,但对于单个列值。它只能在INSERT语句的VALUES子句中使用,或者作为UPDATEDELETESELECT语句中的一个列值。例如,它不能在SELECT语句的selection子句中使用。

toJson() 函数

toJson()函数可以类似于SELECT JSON使用,但对于单个列值。它只能在SELECT语句的selection子句中使用。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值