CQL 函数及多深度关系节点
生活随笔
收集整理的這篇文章主要介紹了
CQL 函数及多深度关系节点
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. CQL 函數
數據準備
// 刪除所有的節點和關系 MATCH(n) OPTIONAL MATCH (n)-[r]-() DELETE n,r// 創建Person 的節點 CREATE (person:Person {cid:1,name:"范閑",age:24,gender:0,character:"A",money:1000,description:"范閑,是貓膩小說《慶余年》主人公,穿越人士,慶國數十年風雨畫卷的見證者。其容貌俊美無雙,尤勝于女子,生性淡薄剛毅,善良而腹黑,城府極深,重視恩情。最終隱居江南"}); CREATE (person:Person {cid:2,name:"林婉兒",age:20,gender:1,character:"B",money:800,description:"林婉兒是慶國宰相和長公主的私生女,電視劇《慶余年》里的女主人公,由李沁飾演"}); CREATE (person:Person {cid:3,name:"慶帝",age:49,gender:0,character:"A",money:8900,description:"慶帝,網文作家貓膩所著的權謀小說《慶余年》的角色之一,南慶國的皇帝,心中裝有天下統一"}); CREATE (person:Person {cid:4,name:"長公主",age:46,gender:1,character:"B",money:3700,description:"《慶余年》中,長公主這個人不僅人設很復雜,就連她的感情生活還是挺復雜。長公主所處的身份就是慶國的公主,皇帝的妹妹,太子的姑姑,國家重要財權的掌管,林婉兒的母親"}); CREATE (person:Person {cid:5,name:"宰相林若甫",age:47,gender:0,character:"A",money:1600,description:"林若甫,是電視劇《慶余年》登場的虛擬人物之一,南慶當朝宰相,林婉兒的親生父親。"}); CREATE (person:Person {cid:6,name:"葉靈兒",age:20,gender:1,character:"C",money:700,description:"葉靈兒,網文作家貓膩所著的權謀小說《慶余年》的角色之一,林婉兒的好友,最后嫁給了二皇子"}); CREATE (person:Person {cid:7,name:"九品射手燕小乙",age:47,gender:0,character:"C",money:900,description:"一品最低,九品最高。慶帝身邊的燕小乙便是九品,而且是慶國獨一無二的神射手,臂力、眼力、聽力驚人"}); CREATE (person:Person {cid:8,name:"二皇子",age:26,gender:0,character:"B",money:1700,description:"《慶余年》中,二皇子結局自殺身亡。二皇子對慶帝也是意見很大,但以他的實力還掀不起什么水花,所以只能慢慢等待時機"}); CREATE (person:Person {cid:9,name:"靖王世子",age:25,gender:0,character:"A",money:1600,description:"在《慶余年》中,此靖王非彼靖王,但是同音之美也會讓人會對靖王世子李弘成這個角色產生好感,而靖王世子李弘成的出場的確是幫助了范閑逃脫太子勢力的糾纏"}); CREATE (person:Person {cid:10,name:"王啟年",age:46,gender:0,character:"C",money:1700,description:"王啟年,網文作家貓膩所著的權謀小說《慶余年》的角色之一,慶國監察院一處的文書,擅長追蹤之術。"}); CREATE (person:Person {cid:11,name:"北齊圣女海棠朵朵",age:21,gender:1,character:"A",money:2600,description:"海棠朵朵是北齊國的才女,被人尊稱為圣女,而且是北齊大宗師苦荷的關門弟子,在北齊國也算是舉足輕重的人物"}); CREATE (person:Person {cid:12,name:"北齊小皇帝戰豆豆",age:20,gender:0,character:"A",money:4600,description:"很多人想知道劇中的北齊小皇帝是誰呢?讓小編告訴你們吧。 戰豆豆是北齊第二任皇帝,乃前北魏一代大將戰清風之孫,大宗師苦荷的叔侄女兼徒孫"});//創建關系 match(person:Person {name:"范閑"}),(person2:Person {name:"林婉兒"}) create(person)-[r:Couple]->(person2); match(person:Person {name:"范閑"}),(person2:Person {name:"王啟年"}) create(person)-[r:Friends]->(person2); match(person:Person {name:"范閑"}),(person2:Person {name:"北齊圣女海棠朵朵"}) create(person)-[r:Friends]->(person2); match(person:Person {name:"范閑"}),(person2:Person {name:"慶帝"}) create(person)-[r:Father]->(person2); match(person:Person {name:"范閑"}),(person2:Person {name:"長公主"}) create(person)-[r:Wife_Mother]->(person2); match(person:Person {name:"慶帝"}),(person2:Person {name:"二皇子"}) create(person)-[r:Son]->(person2); match(person:Person {name:"慶帝"}),(person2:Person {name:"長公主"}) create(person)-[r:BrotherSister]->(person2); match(person:Person {name:"二皇子"}),(person2:Person {name:"靖王世子"}) create(person)-[r:Friends]->(person2); match(person:Person {name:"北齊圣女海棠朵朵"}),(person2:Person {name:"北齊小皇帝戰豆豆"}) create(person)-[r:Friends]->(person2); match(person:Person {name:"林婉兒"}),(person2:Person {name:"葉靈兒"}) create(person)-[r:Friends]->(person2); match(person:Person {name:"林婉兒"}),(person2:Person {name:"宰相林若甫"}) create(person)-[r:Father]->(person2); match(person:Person {name:"林婉兒"}),(person2:Person {name:"長公主"}) create(person)-[r:Mother]->(person2); match(person:Person {name:"長公主"}),(person2:Person {name:"九品射手燕小乙"}) create(person)-[r:Friends]->(person2);1.1 字符串函數
| 1 | TOUPPER | 它用于將所有字母更改為大寫字母。 |
| 2 | TOLOWER | 它用于將所有字母改為小寫字母。 |
| 3 | SUBSTRING | 它用于獲取給定String的子字符串。左閉右開 |
| 4 | REPLACE | 它用于替換一個字符串的子字符串。 |
1.2 聚合函數
| 1 | COUNT | 它返回由MATCH命令返回的行數。 |
| 2 | MAX | 它從MATCH命令返回的一組行返回最大值。 |
| 3 | MIN | 它返回由MATCH命令返回的一組行的最小值。 |
| 4 | SUM | 它返回由MATCH命令返回的所有行的求和值。 |
| 5 | AVG | 它返回由MATCH命令返回的所有行的平均值。 |
1.3 關系函數
| 1 | STARTNODE | 它用于知道關系的開始節點。 |
| 2 | ENDNODE | 它用于知道關系的結束節點。 |
| 3 | ID | 它用于知道關系的ID。 |
| 4 | TYPE | 它用于知道字符串表示中的一個關系的TYPE。 |
聚合函數遇到空值不做處理
match(p:person{name:"林婉兒"}) - [r:Couple] - (p:person) return startnode(r),ID(r),TYPE(r)1.4 shortestPath 函數返回最短的 path
MATCH p=shortestPath( (node1)-[*]-(node2) ) RETURN length(p), nodes(p) match p = shortestpath((p1:Person{name:"王啟年"}) - [*] - (p2:Person{name:"九品射手燕小乙"})) return length(p),nodes(p)match p = shortestpath((p1:Person{name:"王啟年"}) - [*1..3] - (p2:Person{name:"九品射手燕小乙"})) return length(p),nodes(p)2. CQL 多深度關系節點
2.1 使用with關鍵字
查詢三層級關系節點如下:with 可以將前面查詢結果作為后面查詢條件
match(na:Person) - [ra] -> (nb:Person) where na.name = "范閑" with na,nb,ra match(nb:Person) - [rb] -> (nc:Person) return na,nb,nc,ra,rbmatch(na:Person) - [ra] -> (nb:Person) where na.name = "林婉兒" with na,nb,ra match(nb:Person) - [rb] -> (nc:Person) return na,nb,nc,ra,rbmatch(na:Person) - [ra] - (nb:Person) where na.name = "林婉兒" with na,nb,ra match(nb:Person) - [rb] -> (nc:Person) return na,nb,nc,ra,rbmatch(na:Person) - [ra] - (nb:Person) where na.name = "林婉兒" with na,nb,ra match(nb:Person) - [rb:Friends] -> (nc:Person) return na,nb,nc,ra,rb2.2 直接拼接關系節點查詢
match(na:Person{name:"范閑"}) - [ra] -> (nb:Person) - [rb] -> (nc:Person) return na,nb,nc,ra,rb為了方便,可以將查詢結果賦給變量,然后返回
match data = (na:Person{name:"范閑"}) - [ra] -> (nb:Person) - [rb] -> (nc:Person) return data2.3 使用深度運算符
當實現多深度關系節點查詢時,顯然使用以上方式比較繁瑣。
可變數量的關系 -> 節點可以使用 -[:TYPE*minHops..maxHops]-。
查詢:
Neo4j入門和基本操作教程地址:https://mall.csdn.net/item/85530
總結
以上是生活随笔為你收集整理的CQL 函数及多深度关系节点的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: “机器学习就是现代统计学”
- 下一篇: 软件实习项目2——贪吃喵(猫吃鱼版贪吃蛇