[英]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.