OrientDB embeddedmap查询

时间:2015-05-07 12:23:29

标签: sql orientdb

假设我在OrientDB中有一个Vertex类数据。数据具有属性数据,其类型为EMBEDDEDMAP。

我可以使用以下命令创建此类型的新Vertex并将对象分配给属性数据:

CREATE VERTEX Data SET data = {'key1':'val1', 'key2':'val2'}

现在假设我想查询数据库并获取在data属性中保存这个结构的记录。

也就是说:

SELECT FROM Data WHERE data = {"key1":"val1","key2":"val2"}

但这不起作用(另请注意,数据中的结构是任意的,可以有嵌套结构:{“key2”:{“key2”:“val2”}}等。)

我知道这个查询可以用于嵌入式地图类型:

SELECT FROM Data WHERE "val1" IN data.key1 AND "val2" IN data.key2

但是对于任意数据结构来说解析这样的查询会很麻烦,这也让我发现了另一件事:

假设我创建了两个顶点:

CREATE VERTEX Data SET data = {"key1":["one", "two"]} 
CREATE VERTEX Data SET data = {"key1":["one"]} 

我现在只想选择第一个,例如:

SELECT FROM Data WHERE ["one", "two"] IN data.key1

但是,此查询会返回两个记录:

@rid    @version    @class  data
#13:7   1           Data    {"key1":["one","two"]}
#13:8   1           Data    {"key1":["one"]}

我猜我必须这样做:

SELECT FROM Data WHERE "one" IN data.key1 AND "two" IN data.key1

但是,对于嵌套列表来说,这似乎也很麻烦。

问题:如何查询已知的任意数据结构(embeddedmap)

注意:我不是在询问结构中的具体值,而是询问整个结构。

0 个答案:

没有答案