OrientDB select 来自多个边的唯一顶点

OrientDB select unique Vertices from multiple Edges

我有 2 个顶点 User 和 Stamp。顶点由三个边 Have、WishToHave 和 Selling 相关。

我希望 select 与用户有任何关系的独特图章。要做到这一点,我是 运行 这个命令:

select expand(out('Have', 'WishToHave', 'Selling')) from #12:0

这个命令的问题是它 returns 'Stamp1' 几次,因为它有 Have 和 Selling 优势。

如何 select 与 User1 相关的所有 unique/distinct 个图章?

为此示例初始化测试数据:

create class User extends V
create class Stamp extends V

create class Have extends E
create class WishToHave extends E
create class Selling extends E

create vertex User set name = 'User1'
create vertex Stamp set name = 'Stamp1'
create vertex Stamp set name = 'Stamp2'
create vertex Stamp set name = 'Stamp3'


create edge Have from (select from User where name = 'User1') to (select from Stamp where name = 'Stamp1')
create edge WishToHave from (select from User where name = 'User1') to (select from Stamp where name = 'Stamp2')
create edge Selling from (select from User where name = 'User1') to (select from Stamp where name = 'Stamp1')
create edge Selling from (select from User where name = 'User1') to (select from Stamp where name = 'Stamp3')

我用你的结构试过你的情况:

要检索唯一顶点,您可以使用 DISTINCT() 函数。我可以举两个例子:

查询 1: 在目标查询中使用 EXPAND()

SELECT EXPAND(DISTINCT(@rid)) FROM (SELECT EXPAND(out('Have', 'WishToHave', 'Selling')) FROM #12:0)

输出:

查询 2: 在目标查询中使用 UNWIND

SELECT EXPAND(DISTINCT(out)) FROM (SELECT out('Have', 'WishToHave', 'Selling') FROM #12:0 UNWIND out)

输出:

希望对您有所帮助