你這樣做的方式對我來說看起來很好。一組節點與它們之間的關係基本上形成一個隊列。你在這裏做的是基本上使用neo4j來建模linked list。
該類別的鏈接可能會變得有趣。使用鏈表,很容易,但隨機訪問(跳到中間)很困難。現在,如果訂單始終是固定的,您可以將seq
屬性添加到您的關係中,並以數字形式(0,1,2 ...)對其進行標註。然後,您可以通過查詢適當的seq
值來跳到任何位置。 但是,如果你想要做動態插入到列表中,這可能是一個可怕的想法。如果您創建了新的#3,這意味着您必須遞增所有後續seq
號碼。所以這可能不會起作用。
也許只是一個始終保證鏈接到序列中的第一項Category
節點去,這樣一個好辦法:只要你想你可以做很多:next
關係
(c:Category {name:"Horror"})-[:contains]->(v1:Video {name: "Texas Chainsaw Massacre"})-[:next]->(v2:Video { name: "Hellraiser"});
。要插入新的東西,你可以這樣做:
MATCH (v1:Video {name: "Texas Chainsaw Massacre"})-[r:next]->(v2:Video {name: "Hellraiser"})
CREATE v1-[:next]->(v3:Video {name: "New Thing I'm inserting"}-[:next]->v2
DELETE r;
另一種方法是,你可以在類別鏈接到每一個視頻(不只是第一)。您的視頻仍然會訂購,您可以通過隨機訪問的視頻名稱進入該視頻,但是您不知道列表的頭部位置在哪裏。
Thnx在這種情況下有更多有趣的事情,視頻不會只是一個排序類別的一部分,每個類別可能有也可能沒有一個節和子節(seq。),所以它看起來像; (類別1) - [:含有] - >(VIDEO1) - [:下一個] - >(VIDEO2); (category2) - [:hasSection] - >(section1) - [:next] - >(section2) - [:hasVideo] - >(video3) - [:next] - >(video4)如果存在子部分,那麼(category2) - [:hasSection] - >(section1) - [:hasSubSection] - >(section3) - [:hasVideo] - >(VIDEO2) - [:下一個] - >(VIDEO3) – awadhesh 2014-11-26 11:55:36