假设我在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)
注意:我不是在询问结构中的具体值,而是询问整个结构。