簡體   English   中英

Neo4J / Cypher:是否可以在where子句中過濾路徑的長度?

[英]Neo4J/Cypher: is it possibile to filter the length of a path in the where clause?

假設我們有這個簡單的模式:

p=(a)-[r]-(b)

其中節點a和b已在WHERE子句中設置了自己的屬性(例如a:Movie AND a.title =“矩陣” AND b:Movie)。 我想在WHERE子句中添加另一個條件,例如

LEGHT(p) =2 OR LENGTH(p)>6

(我知道語法不正確)

據我所知,可以使用[r * min..max]語法在MATCH子句中指定路徑的長度,但這並不涵蓋我正在尋找的情況。

任何幫助將不勝感激=)

是的,完全可以按照您的指定在neo4j中使用。

樣本數據:

create (a:Foo)-[:stuff]->(b:Foo)-[:stuff]->(c:Foo);

然后這個查詢:

MATCH p=(x:Foo)-[:stuff*]->(y:Foo) 
WHERE length(p)>1 RETURN p;

僅返回a->b->c的兩步路徑,而不返回單步路徑( a->bb->c

這對您有用嗎?

MATCH p=(a)-[r*2..]-(b)
WHERE LENGTH(r) = 2 OR LENGTH(r) > 6
RETURN p

請注意,對於大型數據庫,此查詢可能花費很長時間或無法完成,因為MATCH子句未設置路徑長度的上限。

暫無
暫無

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

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