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)
输出:
希望对您有所帮助
我有 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)
输出:
希望对您有所帮助