OrientDb 检查边是否存在于一个方向

OrientDb check if edge exists in one direction

我正在使用 orientdb 并且正在展开所有跟随我的顶点。现在我也在跟踪一些顶点,所以我想检查我是否在跟踪某个特定的顶点。

我正在使用的查询:

SELECT @rid, name FROM (SELECT expand(in('Follow')) FROM users WHERE @rid = #123:8 LIMIT 20)

我也试过

SELECT @rid as userRid, name, if(SELECT FROM follow where out = #123:8 And in = userRid, 1, 0) as followed FROM (SELECT expand(in('follow')) FROM users WHERE @rid = #123:8 LIMIT 20)

知道如何实现预期的结果吗?

试试这个:

select from <your rid> where out('Follow').@rid contains <person rid>

希望对您有所帮助

此致

好的,有了Michela Bonizzi的回答,我就这样解决了

SELECT @rid, name, if(eval("in('Follow') contains #123:8"), 1, 0) as followed FROM (SELECT expand(in('Follow')) FROM users WHERE @rid = #123:8 LIMIT 20)

现在这个人会告诉我我是否也关注我的粉丝。所以Michela的回答是正确的。

让(源)-->(目标)

可以验证在两个方向上是否存在边

SELECT IN('EDGE_CLASS').sourceProperty FROM (SELECT FROM Target WHERE targetProperty = 'value')

SELECT OUT('EDGE_CLASS').targetProperty FROM (SELECT FROM Source WHERE sourceProperty = 'value')

或者,您可以使用别名和 EXPAND 函数来获取感兴趣的 属性。

SELECT EXPAND(IN('EDGE_CLASS').sourceProperty) AS sourceProperty FROM (SELECT FROM Target WHERE targetProperty = 'value')