我正在尝试使用新的crate db。 link 我有一个包含“基础设施”和“网络”对象的表:
CREATE TABLE servers (infrastructure object(strict) as (
#etc...
os_name string,
#etc...
network array(object as
(etc.., hosting_id string, etc... ))
我需要从“基础架构”查询os_name,从网络阵列查询hosting_id。我是怎么做到的我试图谷歌找到正确的语法,但没有成功。我想要这样的东西:
SELECT * FROM servers WHERE infrastructure[os_name] = "some value"
和
SELECT * FROM servers WHERE infrastructure["network"]["hosting_id"] = "some value"
答案 0 :(得分:2)
ANY()是你的朋友,但要注意它不包含对象数组。所以你还需要考虑this information。下面的解决方案适用于最新的Crate版本1.0.1:
SELECT * FROM servers
WHERE
os_name = 'some value'
AND
'some value' = ANY(network['hosting_id']);