[12屆 鐵人賽] [Day15] Cypher 語法簡介 Part6 : 一些雜七雜八的功能 === ###### tags: `iT鐵人賽` `Neo4j` ## 前情提要 現在時間 22:20 究竟今天來不來的及發呢 (゚∀。) 以今天的內容,應該是沒有問題吧 今天的內容會以一些很~~騙天數~~簡單的東西為主 很熟悉 SQL 可以明天再來 (゚∀゚) 我是說直接跳到最後看結語x 先把今天~~用來騙的~~會提到的東西放上來 `ORDER BY`、`LIMIT`、`SKIP`、`FOREACH` ## ORDER BY `ORDER BY` 顧名思義,就是排序嘛 (゚∀゚) ```sql MATCH (n) RETURN n.Name ORDER BY n.Name ``` ![](https://i.imgur.com/hL9Z5NW.png) > 這邊跑的是前面幾篇都在用的資料庫類別的那個資料庫 當然加上 `DESC` 就會變成由大到小排序 `ORDER BY` 也可以對**節點**或是**關係**直接排序 那資料就會按照 `Primary Key` 排序,圖形檢視根本看不出來就是了w 一樣也可以對 `Label` 排序,執行效果一樣是沒什麼感覺,大家可以自己體驗看看 XD ## LIMIT `LIMIT` 一樣,顧名思義,限制資料的上限 如果你再用 Neo4j Browser 有注意的話 你在點旁邊的 Information 的時候,他就會偷偷幫你加了 ```sql MATCH (n) RETURN n LIMIT 25 ``` ![](https://i.imgur.com/W7sdAor.png) 這算是一種防護機制吧 如果你的電腦很爛,`Node` 又有四五千個,一次全部叫出來,你的電腦就準備當機 ~~我絕對不是在說我公司的電腦,絕對不是~~ ## SKIP `SKIP` 一樣,顧名思義,跳過前面幾筆資料 ``` MATCH (n) RETURN n.Name SKIP 1 ``` 老實說,從 SQL 學到 LINQ 學到 NoSQL `SKIP` 這東西的存在意義到底是什麼實在是搞不清楚 只有在處理 Socket binary data 的時候有用過而已 ~~一個跟盲腸一樣可有可無的東西~~ ![](https://i.imgur.com/Hg7zNJY.png) 記得剛剛那三個 `ORDER BY`、`LIMIT`、`SKIP` 都是要放在語句的最後面 不要跟我一樣亂放然後噴錯 ## FOREACH 就是這個啦 ```csharp foreach(var i in list) { Console.WriteLine(i); } ``` 阿不是貼錯了這是 C# 啦,這個啦 ```sql MATCH p = (begin)-[*]->(END) WHERE begin.Name = '資料庫' AND END.Name = 'Neo4j' FOREACH (n IN nodes(p) | SET n.marked = TRUE ) //這裡 RETURN p ``` ![](https://i.imgur.com/r0yJGsQ.png) `FOREACH` 內還可以使用任何相關的語句,`CREATE`、`MERGE` 之類的 截自目前為止,還沒有實際要用 `FOREACH` 的情境 @@ 之後有遇到再分享吧 |> --- 短 & 騙 第 15 篇了,鐵人賽也寫了一半了 從一開始,有積稿無壓力,到現在,無積稿壓力山大 第 30 篇再來寫更完整的心得吧 話說上一篇的彩蛋大家都有發現吧ww 下方留言以獲得更多的彩蛋 明天 ***Cypher 語法簡介 Part7 : Cypher 的最後來講一些函數吧*** 期待明日的降臨吧 Ciao! --- ## 參考資料 [Neo4j Cypher Manual](https://neo4j.com/docs/cypher-manual/current/) (書) [Neo4j 大事典:圖形資料庫&大數據時代](https://www.books.com.tw/products/0010813100) ## 紀錄 撰寫日期:2020/09/29 耗時: 1 小