[英]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->b
或b->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.