我有一个类似以下的查询:
从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条记录。
如何过滤嵌套图关系?
嗨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
它是专门为管理此类查询而设计的。
我正在关闭此问题,如果您需要帮助,请随时重新打开
谢谢
路易吉
最有用的评论
嗨@ snig-b
新的MATCH语句发布了V 2.2
http://orientdb.com/docs/last/SQL-Match.html
它是专门为管理此类查询而设计的。
我正在关闭此问题,如果您需要帮助,请随时重新打开
谢谢
路易吉