2016-10-17 169 views
-1

我想爲我正在處理的項目編寫CREATE關係語句。聲明必須是這樣的Cypher查詢語言中的子查詢

CREATE (match (p:Halt) where p.name="Ananda College" return p)-[:next_halt {route:['103'],dist:1.45}]->(MATCH (p:Halt) where p.name="Borella" return p) 

正如你所看到的,我希望開始節點和結束節點具有來自另一個CQL語句的值。 但是,當我運行這個查詢似乎有一個語法錯誤。我已經通過一些教程來看看我的查詢是錯誤的,但作爲一個初學者,我真的不知道。

Invalid input '(': expected whitespace, comment, node labels, MapLiteral, a parameter, ')' or a relationship pattern (line 1, column 15 (offset: 14)) 
"CREATE (match (p:Halt) where p.name="Ananda College" return p)-[:next_halt {route:['103'],dist:1.45}]->(MATCH (p:Halt) where p.name="Borella" return p)" 
+2

我不確定你在哪裏找到了這個語法,但是你可以在Cypher上找到一個廣泛的入門書(http://neo4j.com/docs/developer-manual/3.0/cypher/)。 –

回答

1

您的語法在這裏相當混亂。請重新閱讀開發文檔,也許看看Cypher作弊表。

至於正確的語法,你甚至不需要嵌套來得到你想要的。首先,你匹配的開始和結束的節點,那麼你可以使用綁定變量在查詢的其他部分,如創建一個關係:

MATCH (start:Halt), (stop:Halt) 
WHERE start.name = "Ananda College" AND stop.name="Borella" 
CREATE (start)-[:next_halt {route:['103'], dist:1.45}]->(stop) 

如果你不能確定是否節點(或關係)是否存在,您可以使用MERGE來替代現有的節點(或關係),或者在不存在的情況下創建它們。