我在Cypher和Neo4j中採取了一些步驟,並理解cypher如何處理「變量」。變量在密碼匹配查詢中的作用
具體來說,我有一個查詢
match (A {name: "A"})
match (A)<-[:st*]-(C)-[:hp]->(c)
match (A)<-[:st*]-(B)-[:hp]->(b)
match (c)-[:st]->(b)
return b
這不會是我想要的工作。現在,在代碼中,我使用了兩次匹配子句(第2行和第3行),以便變量(c)和(d)在第4行的最終匹配之前基本包含相同的節點。 我可以編寫查詢而不必重複第二個匹配條款?使用
match (A {name: "A"})
match (A)<-[:st*]-(B)-[:hp]->(b)
match (b)-[:st]->(b)
return b
似乎是非常不同的東西,沒有返回因爲沒有:從(B)到自身節點ST類型的關係。我的理解到目前爲止,即使(b)和(c)中包含相同的節點,
match (c)-[:st]->(b)
試圖找到的(c)任何節點和(b)任何節點之間的匹配,而
match (b)-[:st]->(b)
試圖從(b)的特定節點查找匹配到自己?還是說,人們必須將3個匹配條款視爲一個整體模式?
thanx的任何洞察到內部工作...