2015-08-25 38 views
0
這樣

我有節點:如何寫一個暗號語句找出第一個匹配點我想

(a {export:true})->(b {export:false})->(c {export:false})-> 
.....some other nodes with export field is false-> 
(d {export:true})->(e {export:true}) 

現在我只想找出a和d,其中有一個關係

(a {export:true})-->(b {expor:true}) 

我寫了一些cypher語句,但不能工作,他們會返回a-> d和a-> e。有人知道如何寫一個可以像我想要的那樣工作的密碼聲明嗎?

感謝您

+1

請發佈您嘗試的查詢 –

+0

您是否正在嘗試編寫一個查詢,以查找哪些節點連接的位置出口:true,通過導出的項目連接:false? – FrobberOfBits

+0

謝謝,夥計們,我的問題由cybersam解決。 – YubinLai

回答

0

回答

以下查詢返回由0或多個節點,所有包含export:false分離所有連接export:true節點對。

MATCH p=(a { export:true })-[*]->(b { export:true }) 
WHERE 
    LENGTH(p) = 1 OR 
    ALL (x IN NODES(p)[1..LENGTH(p)-1] WHERE NOT x.export) 
RETURN a, b; 

注:LENGTH(p)返回路徑p關係的數量。

應答b

Answer A實際上可以通過刪除LENGTH(p) = 1測試被簡化:

MATCH p=(a { export:true })-[*]->(b { export:true }) 
WHERE ALL (x IN NODES(p)[1..LENGTH(p)-1] WHERE NOT x.export) 
RETURN a, b; 

但爲什麼這種簡化的查詢還工作需要更多的解釋。如果LENGTH(p)爲1,則:

  1. NODES(p)[1..0]結果[]
  2. ALL(x IN [] WHERE ...)結果true(不管是什麼...是)。
+0

謝謝,cybersam。你的回答對我很有幫助。 – YubinLai

相關問題