簡體   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