OrientDB从多条边中选择唯一顶点

OrientDB从多条边中选择唯一顶点,orientdb,graph-databases,Orientdb,Graph Databases,我有两个顶点用户和邮票。顶点由三条边Have、WishToHave和sell关联 我希望选择与用户有任何关系的独特邮票。为此,我运行了以下命令: select expand(out('Have', 'WishToHave', 'Selling')) from #12:0 此命令的问题是它返回“Stamp1”几次,因为它具有和销售优势 如何选择与User1相关的所有唯一/不同的戳记 要初始化此示例的测试数据,请执行以下操作: create class User extends V create

我有两个顶点用户和邮票。顶点由三条边Have、WishToHave和sell关联

我希望选择与用户有任何关系的独特邮票。为此,我运行了以下命令:

select expand(out('Have', 'WishToHave', 'Selling')) from #12:0
此命令的问题是它返回“Stamp1”几次,因为它具有和销售优势

如何选择与User1相关的所有唯一/不同的戳记

要初始化此示例的测试数据,请执行以下操作:

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)
SELECT EXPAND(DISTINCT(out)) FROM (SELECT out('Have', 'WishToHave', 'Selling') FROM #12:0 UNWIND out)
输出:

查询2:在目标查询中使用
展开

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


希望能有所帮助

非常感谢。这正是我想要的。嗨@TWeb,很高兴能帮上忙。