2015-12-11 46 views
0

我有2臺的路徑如何排除一些路徑中的Neo4j Cypher支架

類別1

  1. A-> B-> C-> d
  2. A-> E-> F- > d
  3. A-> G-> J->ħ
  4. I-> B-> C-> d

類別2

  1. E-> d
  2. I-> d

Cypher支架查詢輸出應該是集合1,其中節點第二集合的組合不存在的路徑。 在上面的例子中,集合2的節點E,D,第1個元素存在於集合1的第2個路徑中,所以應該丟棄第2個元素。類似地,集合2,第二元素的節點I,D存在於集合1的第四路徑中,所以第四也應該被丟棄。

然後輸出應該是 系列3

  1. A-> B-> C-> d
  2. A-> G-> J->ħ

通過Cypher支架,我能夠找到集合1的路徑,其中存在集合2路徑的節點,但我無法在集合中執行「減去」操作。

如何獲得上面的密碼查詢?

在此先感謝

Rasyq

+0

你能分享你的Cypher查詢嗎? –

回答

0

沒有你們的暗號詢問這是不容易回答的問題。但通常情況下,您可以從nodes(your_path)的路徑中獲取節點,並使用all()謂詞檢查是否所有這些節點都包含在另一個路徑中。

MATCH p1 = (your first paths), p2 = (the paths you check against) 
// filter paths where NOT all nodes of p2 are in p1 
WHERE NOT all(node2 IN nodes(p2) WHERE node2 IN p1) 
RETURN p1