我試圖創建一個新/ Cypher支架鏈表結構,每recomendation這裏替換:CYPHER store order of node relationships of the same label when I create暗號鏈表:如何不印字和指數
(p:Parent)-[r1:PARENTID_RELTYPE]->(c1:Child)-[r2:PARENTID_RELTYPE]->(c2:Child)-[r3:PARENTID_RELTYPE]->(c3:Child)
但我無法理解的語法所需的事件順序,以便將新節點移位到結構上或用不同的節點替換特定的索引。
我感到困惑的地方是我需要添加新節點並修復使舊節點仍在鏈表結構內的結構。每個類型(PARENTID_RELTYPE)應該只有一個來自父節點的關係;但是,每個父母可以有不同類型的多種關係。子節點可以在LinkedList中多次顯示,並且子節點可以顯示在多個父代的LinkedList中,或者位於同一父代的LinkedList中,但是具有不同的關係類型。
現時沒有孩子,通過
已經有一個子節點鏈接的PARENTID_RELTYPE鏈接到父:
所以,當我嘗試不印字以下三種情況之一可能發生父母通過PARENTID_RELTYPE
已經存在通過PARENTID_RELTYPE鏈接到父節點的子節點,並且該子節點僅僅是子節點的副本我試圖解除ontift ont o鏈表結構(在這種情況下,預期的結果是在鏈表的零和第一個索引中具有相同的子節點)。
上述答案的網址可以幫助我大大地瞭解如何閱讀新/ Cypher支架鏈表結構,但因爲其條件語句在暗號處理的另一種方式,我無法理解怎麼寫到結構(並且從結構中刪除)。
以下是我最初的嘗試,但我對我需要的語法有些困惑。
MATCH (a:%s {id: {_parentnodeid}}), (b:%s {id: {_id}})
MERGE a-[relold:%s]->b
ON CREATE
SET relold.metadata = {_metaData}
ON MATCH
...
我非常感謝您的幫助,您可以提供。
感謝各位大大的幫助cybersam。我一直在嘗試這些,我成功地使用了1.unshift。對於2.replace,你爲什麼使用MATCH(p) - [:Foo * 4 ..4] - >() - [r:Foo] - >(c:Child)而不是MATCH(p) - [r:Foo * 4] - >(c:Child)? 此外,有沒有辦法在索引4處沒有節點的情況下回退?在密碼查詢將填充空白的情況下,使用一些替代靜態屬性/標籤在索引0到3創建節點,並最終在索引4創建預期節點?或者如果在索引0處已經有一個與關係Foo鏈接的子節點,則在索引1至3創建節點? –
另外,如果MATCH(p) - [r:Foo * 0] - >(c:Child)不會產生索引0的結果,查詢是否可以返回並且(不移位)是否可以創建我們最初計劃在索引處創建的節點關係0? –
我看到#2是* insert *,而不是* replace *。我會更新我的答案。 – cybersam