簡體   English   中英

如何排除Neo4j Cypher中的某些路徑

[英]How to exclude some paths in Neo4j Cypher

我有2套路徑

集合1

  1. A-> B-> C-> D
  2. A-> E-> F-> D
  3. A-> G-> J-> H
  4. I-> B-> C-> D

集合2

  1. E→D
  2. I-> D

Cypher查詢輸出應為集合1的路徑,其中第二集合的節點組合不存在。 在上面的示例中,集合2的節點E,D的第一個元素位於集合1的第二條路徑中,因此應刪除第二個。 同樣,集合2第2個元素的節點I,D位於集合1的第4條路徑中,因此也應刪除第4個。

然后輸出應該是Collection 3

  1. A-> B-> C-> D
  2. A-> G-> J-> H

通過Cypher,我能夠找出存在集合2路徑的節點的集合1的路徑,但是我無法在集合之間進行“減”運算。

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

提前致謝

拉西克

沒有您的Cypher查詢,很難回答。 但是通常,您可以從具有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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM