Neo4j 資訊分類建模

2021-09-14 04:03:18 字數 2333 閱讀 8090

麻煩建立乙個neo4j標籤, 分不夠無法建立

這篇檔案是用來顛覆那些過去在關聯式資料庫中建立無限分類的同學的三觀的!

用圖來解決這種問題, 是不是很easy!

所以, 選擇最合適的工具解決特定問題

還有: 目前在rdbms中比較難處理的問題, 都可以在圖資料庫當中很輕巧的解決.

neo4j 把資料儲存為節點和關係, 屬性以鍵值對的形式儲存, 並連線到節點或者關係. 關係連線兩個節點, 並且關係是有型別和方向的.

關係可以雙向遍歷. 關係型別是通過名稱來標識的.

分類建模為節點, 有公共的屬性:.

如果我們需要跟蹤節點的生命週期, 還可以在節點上增加created_at,updated_at,deleted_at等屬性.
建立分類根和唯一約束

create (c:category_root )

create constraint on (c:category_root) assert c.id is unique

那麼,id就要求唯一了, 如果我們再次執行create (c:category_root ), 將會丟擲下面的錯誤:

新增子分類

create (:category )

create (:category )

create (:category )

建立關係

match (root:category_root ), (c:category ) create (root)-[:children]->(c)

match (root:category_root ), (c:category ) create (root)-[:children]->(c)

match (root:category_root ), (c:category ) create (root)-[:children]->(c)

獲取分類資訊樹(json)

// 獲取分類樹的json返回

match p = (root:category_root)-[r:children]->(c:category)

with collect(p) as paths

call apoc.convert.totree(paths) yield value

return value

返回的結果為

,,]}

要做成下面這種樣子麼? 自己舉一反三了!

分類樹視覺化

帶上時間戳

時間格式可以用apoc.date.format函式來轉換

更新neo4j節點資訊

將多個屬性的內容更新到節點上 def update by id id,graph,kwargs 更新節點的屬性 根據節點的id來更新節點的屬性,如果存在該屬性,則更新,如果不存在該屬性,則新增 if graph is none graph get graph if kwargs is none re...

Neo4j學習(2) Win系統安裝Neo4j

neo4j 是目前最流行的圖形資料庫,支援完整的事務,在屬性圖中,圖是由頂點 vertex 邊 edge 和屬性 property 組成的,頂點和邊都可以設定屬性,頂點也稱作節點,邊也稱作關係,每個節點和關係都可以由乙個或多個屬性。neo4j建立的圖是用頂點和邊構建乙個有向圖,其查詢語言cypher...

Neo4j檔案說明

neo4j作為資料庫式的nosql工具,檔案儲存也有其獨特方面。neostore neostore.id 儲存版本資訊 neostore.nodestore.db neostore.nodestore.db.id 儲存節點資料與節點序列id neostore.propertystore.db neo...