2015-10-16 91 views
0

請道歉,我是新的對stackoverflow和OrientDB全新的。我在OrientDB中有以下簡單的測試結構: different connected nodes, which have a list of tags as propertyOrientDB遍歷節點屬性的交集條件

我想只顯示圖形的一部分(帶邊的節點),它們在標籤處有一個交點。這應該是對於這個例子,突出顯示的紅色節點和平滑的紅色一次,邊緣PRAESENTIERT_BEI

在Neo4j中,它非常容易。你只要認準開始節點,在遍歷所有連接和物業使用類似下面的代碼示例過濾器比較:

MATCH (n:ConferenceSerie) 
MATCH p = n-[*]-m WHERE FILTER(x IN n.flag WHERE x IN m.flag) 
RETURN p 

但我不知道如何處理它OrientDB。我認爲這可以用TRAVERSE相交()函數,但我不知道如何比較兩個節點的屬性。

有沒有機會創建一個顯示子圖的SQL查詢?

在此先感謝。

回答

0

我使用的字段標籤爲EmdeddedList字符串

create class A extends V 
create property A.tags EmbeddedList String 
create class B extends V 
create property B.tags EmbeddedList String 
create class C extends V 
create property C.tags EmbeddedList String 
create class D extends V 
create property D.tags EmbeddedList String 

create class E1 extends E 
create class E2 extends E 
create class E3 extends E 

insert into A(tags) values(["http"])    //#12:0 
insert into B(tags) values(["www","cs","at"])  //#13:0 
insert into C(tags) values(["www","papers","com"]) //#14:0 
insert into D(tags) values(["https"])    //#15:0 

create edge E1 from 12:0 to 13:0 
create edge E2 from 14:0 to 13:0 
create edge E3 from 14:0 to 15:0 

嘗試以下查詢

select expand(list) from (select $d as list from e 
let $a=(select in.tags as tags from $parent.$current unwind tags), 
$b=(select out.tags as tags from $parent.$current unwind tags), 
$c=intersect($a.tags,$b.tags), 
$d=unionAll(@rid,[email protected],[email protected]) 
where $c.asList().size()>0)