2017-05-29 59 views
0

例如,在下面的樹結構:如何返回OrientDB圖中沒有特定子孫的所有節點?

root 
    (name = a) 
    (name = b) 
     (name = c) 
    (name = a) 
    (name = x) 
     ... 
     (name = c) 
    (name = a)   
    (name = c) 
    (name = a) 
    (name = e) 

其中,只有一個類型在圖中邊緣的稱爲HAS_CHILD。從root到第一c節點的路徑,例如,將是:

root-HAS_CHILD->a-HAS_CHILD->b-HAS_CHILD->c 

我想返回名爲a所有節點沒有名爲c後裔。在這種情況下,這將是名爲a的第四個節點。

中的XPath相當於將類似於:

//*[not(.//*[contains(@name, 'c')])] 

回答

1

也許有一個更有效的方法,但這應該工作:

select from node where (name='a') and (@rid not in (select from (traverse in('has_child') from (select from node where name='c')) where name='a')) 

enter image description here

相關問題