如何在 Oracle NoSQL 中执行以下查询

How to do the following query in Oracle NoSQL

我打算使用 NoSQL 云服务作为我们的数据存储。我对 MAP 数据类型有疑问。假设我有一列“labels”(labels MAP(RECORD(value STRING, contentType STRING)) in table “myTable”,其中“labels”列是 MAP 数据类型,值是 RECORD 数据类型。

我想查询table其中return所有“标签”的键=特定值的行,sql语句是什么样的?我试过了:

select * from myTable where labels.keys($key=‘xxxx’)

这行不通。

是否需要为MAP中的label字段添加索引?任何性能改进?如果是,如何添加这个索引?

谢谢

请尝试以下语法

select * from myTable t 
where t.labels.keys() =any "xxx"

如果你添加 exists

,你的语法就很好
select * from myTable  t 
where exists t.labels.keys($key= “xxx”)

关于你的性能问题

会有显着的性能提升。 如果您只想索引地图的字段名称(键), 你这样创建索引:

create index idx_keys on myTable(labels.keys())

如果你想索引它们的键和关联的值:

create index idx_keys_values 
on myTable(labels.keys(), labels.values())