存在/不存在传出边缘的从OrientDb一个顶点(Presence / absence of an

2019-10-30 11:00发布

我看到的SO一些类似的问题,但没有一个答案还没有为我工作,所以我希望能获得与已经加入到最新版本OrientDb以来的其他问题提出新的功能一个新的答案。

我想查询哪些具有特定类型的传出边缘,但其他类型的无流出边的所有顶点。

作为一个简单的关系的示例

人----朋友--->人员

人----旗下拥有--->汽车

我试图找到所有谁有朋友,但没有自己的车的人。

我已经尝试下面的查询,没有运气(这不论这些顶点是否拥有特定类型的外出边缘返回所有的人)

select from Person where (out('Friend') not null and out('Owns').size() = 0)
select from Person where (out('Friend') is not null and out('Owns') is null)

在我的努力我意识到,不能查询尚未被OrientDb WHERE子句按本页面支持: https://github.com/orientechnologies/orientdb/wiki/SQL-Where有人请核实,如果这确实是真的。

不管怎么说,我提出和试图简化我查询,并试图找到唯一不具有的“拥有”即将离任的边缘顶点。 即使是没有工作的,因为它似乎返回所有的人在顶我的图:

select from Person where (out('Owns').size() = 0)
select from Person where (out('Owns') is null)

不知道我失踪,但任何帮助一如既往不胜感激。

Answer 1:

试着用大小一直在努力,就像这样:

select from Person where outE('Friend').size() > 0 and outE('Owns').size() = 0


Answer 2:

然而,我的查询返回不同于客户选择其中欧特(“电子邮件”)尺寸()> 0。 0项

从客户那里欧特(“电子邮件”)不为NULL选择; 许多项目返回

在我看来“大小()> 0”是不一样的“不为空”

如果对不起错了



文章来源: Presence / absence of an outgoing edge from a vertex in OrientDb