[12屆 鐵人賽] [Day8] Neo4j 結構基礎概念,終於進到比較技術的部份了 === ###### tags: `iT鐵人賽` `Neo4j` ## 前情提要 這篇可能會很短 阿不對 接下來幾篇可能都會很短 (゚∀゚) 上一篇在介紹介面內容的時候,有提到了一堆奇怪的名詞 今天這篇將會好好的來介紹一下他們 沒有屁話可以講,直接開始吧 ~ ## Neo4j 結構基礎 還記得 第二篇提到的圖形資料庫的核心嗎 * 節點 Node *  * 關係 Relationship *  那麼他都叫資料庫了,總要有一些可以儲存資料的部分吧 當然有! 這時候就要提到另外兩個一樣重要的元素了 * 標籤 Lable & Type for * Lable for Node * Type for Relationship * 屬性 Property 押觀念時間 :::info 整個 Neo4j 的基礎,由 Node 跟 Relationship 構成 而 Node 跟 Relationship 都各自包含 Lable 跟 Property 但實際的情況略有不同 ::: ## Node & Relationship 先來簡單演藝一下 Node 跟 Relationship 的一些組合吧 | 圖像 | 說明 | | -------- | -------- | |  | 這是兩個可愛的節點 | |  | 他們兩個之間突然有了關係 | |  | 然而 Node2 其實比較喜歡 Node3 | |  | 而 Node3 其實對 3P 比較有興趣 | |  | 這時 Node3 跟 Node2 突然發現<br/><br/>原來 Node1 可以自攻自受 | |  | 於是 Node1 決定攻略自己 <br/><br/> ... ( 完結 ) | > 感謝 Node1 Node2 Node3 的演出 大家看完這三個 Node 之間的愛情故事之後 有沒有更加了解 Node 跟 Relationship 之間的可能性了呢 :::success Node 之間的 Relationship 數量是可以一直增加的 但是一條 Relationship 只會有頭尾**兩個** Node  > 好險 Node1 自攻自受了呢 ::: ## Lable & Type & Property 首先先切換到上一篇提過的 "Json 顯示模式" ```json= // Node { "identity" : 0, "labels" : [ "Person" ], "properties" : { "Name" : "Node 1" } } // Relationship { "relationship" : { "identity" : 0, "start" : 0, "end" : 1, "type" : "Connect", "properties" : {} } } ``` * Lable * 第 4 行 * Type * 第 18 行 * Property * 第 7 行 & 第 19 行 我們分開解釋吧 ### Lable ```json= "labels" : [ "Person" ] ``` 首先 Lable,或是好理解一點,你可以叫他 Tag 看一下 Json 結構,你可以發現他就是一個 `String` 的陣列 換句話說你是可以加非常多的 Label 在一個 Node 上的 ### Type ```json= { "relationship" : { ... "type" : "Connect", ... } } ``` Relationship Type 我覺得跟 Node Lable 長得很像 因為在下語法的時候,這兩個的用法基本上是一樣的 > 這部分之後會說明 不過每一條 Relationship 只能有**一個** Type ### Property ```json= "properties" : { "Name" : "Node 1" } // or "properties" : { "Name" : "Node 3", "Age" : 17, "PlayWith" : [ "Node 1", "Node 2" ] } ``` Property 跟標準 Json 沒什麼兩樣 連在下語法的時候,格式也可以說是一模一樣 不過巢狀結構是不允許的 #### 允許的資料類型 * 數值 `int` or `float` * 字串 `string` * 布林值 `bool` * 日期 `DateTime` * 空間座標 `The spatial type Point` 相關細節歡迎參考[官方文件](https://neo4j.com/docs/cypher-manual/current/syntax/values/#property-types) > 插旗時間 |> > 寫了這篇才知道原來 Neo4j 可以存 **WGS 84** >  > 所以我們倒數幾篇的時候就來聊聊這個主題吧 --- 基礎結構講完了 (゚∀゚) 原本是說可能會比較短 結果還是一樣長呢 (゚∀。) 下一篇要準備進入枯燥乏味的程式時間了 究竟會不會打字打到睡著呢w 明天 ***Neo4j 獨創 Cypher Query Language*** 期待明日的降臨吧 Ciao! ## 紀錄 撰寫日期:2020/09/15 晚 & 2020/09/16 <!--~~上班時間~~--> 耗時:至少 2.5 小
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up