OrientDB - 通过连接到它们的其他顶点过滤选定的顶点

时间:2016-06-15 22:33:50

标签: sql filtering server-side orientdb

我不是OrientDB的专家,所以也许我的问题听起来很愚蠢;但是我没有在文档或网络上找到任何答案。

This is a sample of a data structure that I have: 我想找到所有有蓝眼睛的海狸,他们很开心,他们知道。

我确实设法用out()函数选择眼睛颜色和幸福状态 - 类似于

SELECT out('has').eyeColors, out('is').happinessState FROM beavers

但是如何通过那些连接的顶点进行过滤?我试过了

SELECT * FROM beavers WHERE out('has').eyeColors = 'blue' AND out('is').happinessState = 'happy and knows it'

SELECT * FROM beavers WHERE (SELECT out('has').eyeColors FROM beavers) = 'blue' AND (SELECT out('is').happinessState FROM beavers) = 'happy and knows it'

但两种查询类型都倾向于返回空结果。

那么 - 我怎样才能做出这样的选择?

*我运行Community Edition,v.2.1.11,并在服务器端JS功能中完成所有这些。

谢谢, 格雷戈里

1 个答案:

答案 0 :(得分:2)

在WHERE条件下,您需要使用CONTAINS字,因为out() - in()both() - 会返回一个列表。

例如

select from Beaver where out('has').eyeColors contains "Blue" and out("iss").happinessState contains "happy and knows it"

您可以通过选择它来验证它是否返回列表:

select out('has').eyeColors from Beaver

PS

我看到你正在使用名为is的边缘类,我认为这是不允许的,因为它是一个私有词。

希望它有所帮助。伊万

<强>更新

select name from Children
let $a=(select from Beaver where in('has').@rid contains $parent.$current.@rid and out('has').eyeColor contains "Blue" and out("iss").happinessState contains "happy and knows it")
where $a.size() > 0