我有多個源自節點的關係。這些關係中的每一個都具有相同的標籤。這些關係指向一個子節點(不是唯一唯一的)。在我通過這個關係標籤獲取鏈接到父項的所有子節點後,我通過一個名爲trueindex的關係屬性對它們進行了排序。然後我有一系列節點,我的客戶端可以按照正確的排序順序進行迭代。CYPHER在創建時存儲同一標籤的節點關係的順序
問題出現在我試圖「推,彈出,不移等等......」到這個數組上。如果我想添加一個新的關係到訂單的前面,我必須創建一個新的關係,使用它將父項鍊接到子節點,然後向關係trueindex屬性添加一個0值。問題是已經存在與trueindex值爲零的關係,我需要執行一些casecading函數,以增加所有其他關係(全部來自同一父節點的相同類型)的trueindex。我試圖找到一種方法來獲得免費的「類似數組」的索引號功能
我認爲這樣做的唯一方法是首先刪除源於父級的特定標籤的所有關係。然後重寫整個數組(爲了反映正確的順序,使用所有預先存在的關係將它們的trueindex增加一)。這對於小案例來說很好,但是如果我計劃讓父節點擁有大量關係,那麼每次我想要添加,刪除索引,流行等時,都需要重寫整個數組(關係集)。但仍然保持源自父節點的關係的順序。
在創建新關係時,Neo4j是否有某種關係功能可以寫入正確的順序?
非常感謝您的建議,您可以提供。
如果一個孩子節點可以有多個父節點(即在同一個關係標籤的多個「數組」中有特徵),那麼如何管理:Next標籤以反映每個父母的數組的成員資格? –
@BenjaminMcFerren當鏈接列表彼此交叉,即共享一個節點,然後標記每個唯一鏈表的NEXT關係時,可以爲每個鏈表保留父節點的id作爲NEXT的屬性。 –
謝謝@ S.D。和jjaderberg。我現在試圖從你的建議中寫出一個不移位的查詢,但是我對條件部分有問題。我試過CASE,但它似乎只與RETURN或WITH具體值有關,而不是允許我在條件下執行CREATE。我試圖創建鏈接列表中的第一個鏈接,當這產生零結果:MATCH a- [rel:RELTYPE] - > b n.id = {_ parentnodeid},如果它產生1的結果,我想執行上面答案中描述的鏈接列表操作。非常感謝您對此的幫助 –