繁体   English   中英

OrientDB从多个Edge中选择唯一的顶点

[英]OrientDB select unique Vertices from multiple Edges

我有2个顶点User和Stamp。 顶点由Have,WishToHave和Selling三个边缘关联。

我希望选择与用户有任何关系的独特图章。 为此,我正在运行以下命令:

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)

输出:

在此处输入图片说明

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

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

输出:

在此处输入图片说明

希望能帮助到你

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM