Orientdb: 过滤嵌套关系的属性

创建于 2015-05-20  ·  5评论  ·  资料来源: orientechnologies/orientdb

我有一个类似以下的查询:

从classD中选择$ ab,$ ac,$ a.out('r3')。e,$ a.out('r3')。f
LET $ a = out('r')。in('r2')
WHERE field ='abc'和$ a.out_r3.some_field ='some_value'或($ a.some_field IS为NULL)

显而易见,我使用-> out('r3')语法访问附加顶点的字段,并使用out_r3语法访问Edge的字段。

这些语法在投影中可以很好地工作,但是在WHERE子句中不起作用,因为返回时$ a.out_r3中的值是所有值的集合。 我以为UNWIND运算符可以在那帮我,但我不确定。

这种情况的示例图是:

A-> D <-C-> E

我正在通过A的关系访问D,C,E,并希望筛选连接A&D和C&D的关系的属性。

所有语法更改均失败,它仅返回0条记录。
如何过滤嵌套图关系?

question

最有用的评论

嗨@ snig-b

新的MATCH语句发布了V 2.2

http://orientdb.com/docs/last/SQL-Match.html

它是专门为管理此类查询而设计的。

我正在关闭此问题,如果您需要帮助,请随时重新打开

谢谢

路易吉

所有5条评论

嗨Snigdha,

你尝试过这个吗?

$ a.out_r3.some_field包含“某些值”

甚至更好

$ a.out(“ r3”)。some_field包含“某些值”

路易吉

2015-05-20 14:17 GMT + 02:00 Snigdha Batra [email protected]

我有一个类似以下的查询:

从classD中选择$ ab,$ ac,$ a.out('r3')。e,$ a.out('r3')。f
LET $ a = out('r')。in('r2')
WHERE field ='abc'和$ a.out_r3.some_field ='some_value'或(
$ a.some_field IS NULL)

显而易见,我使用-> out('r3')语法来访问
附加的顶点和out_r3语法来访问Edge的字段。

这些语法在投影中工作正常,但在WHERE中不起作用
子句,因为返回时$ a.out_r3中的值是所有值的集合
价值观。 我以为UNWIND运算符可以在那帮我,但我不确定。

这种情况的示例图是:

A-> D <-C-> E

我正在通过A的关系访问D,C,E,并希望根据
连接A&D和C&D的关系的属性。

所有语法更改均失败,它仅返回0条记录。
如何过滤嵌套图关系?

-
直接回复此电子邮件或在GitHub上查看
https://github.com/orientechnologies/orientdb/issues/4186。

嘿路易吉

感谢您的回复。

是的,我有一个非常小的用例,它检查结果集合中是否存在字符串类型数据。 这是整个记录返回数组的条件。

我的要求是在形成集合之前应用过滤器。

那就是如果$ a.out(“ r3”)返回我['#12:456','#13:4667']

或$ a.out(“ r3”)。some_field返回我[[some_value“,..]

然后,我想应用一个where子句,让我选择是否在结果中返回包含记录的“ some_value”。 即完全删除“#12:456”关系。

MATCH查询的另一个GraphDB示例中存在类似的功能-

匹配(a:A)-[b:B]->(c:C)-[e:E]->(f:A)
在e.some_field> b.some_field
返回a,b,c

结果记录将不包含不满足where条件的组合。

这事有进一步更新吗?

好的,我现在遇到了问题。
现在使用SQL查询很难做到这一点,这就是为什么我们以相同的原理实现新的MATCH语句(https://github.com/orientechnologies/orientdb-docs/blob/master/SQL-Match.md)您发布的查询示例

嗨@ snig-b

新的MATCH语句发布了V 2.2

http://orientdb.com/docs/last/SQL-Match.html

它是专门为管理此类查询而设计的。

我正在关闭此问题,如果您需要帮助,请随时重新打开

谢谢

路易吉

此页面是否有帮助?
0 / 5 - 0 等级