這一篇把CQL常用的命令進(jìn)行收尾, 順便會(huì)講一下CQL的幾個(gè)函數(shù)。
本篇主要內(nèi)容為UNION, LIMIT, SKIP, IN語(yǔ)句的使用, 字符串函數(shù), 聚合函數(shù), 關(guān)系函數(shù)的簡(jiǎn)單使用。
UNION合并
Neo4j的union和sql一樣, 包含兩個(gè)子句, 可以將不同的結(jié)果合成一組結(jié)果:
- UNION
- UNION ALL
<MATCH 1....>
UNION
<MATCH 2...>
注意: 兩個(gè)不同的查詢結(jié)果如果返回的列名和數(shù)據(jù)類型不同, 將會(huì)拋出錯(cuò)誤, 我們需要使用as起個(gè)別名(前綴不同也會(huì)報(bào)錯(cuò))
示例: 我們將student和book進(jìn)行合并
MATCH (s:student) RETURN s.name as name union match (b:Book) RETURN b.name as name

LIMIT和SKIP
LIMIT命令和SKIP命令比較簡(jiǎn)單, LIMIT就是限制查詢多少條, 比如我們值查詢student中的前兩條數(shù)據(jù)
MATCH (n:student) RETURN n LIMIT 2
SKIP命令就是跳過(guò)多少條數(shù)據(jù):
MATCH (n:student) RETURN n SKIP 3
通過(guò)上面兩條命令我們就能實(shí)現(xiàn)分頁(yè)的操作, 比較簡(jiǎn)單, 可以自定嘗試下
IN命令
和sql語(yǔ)句中幾乎一樣, 直接上示例, 查詢出student中age為22, 33的節(jié)點(diǎn)(注意用的是方括號(hào))
MATCH (n:student) WHERE n.age in ['22','33'] RETURN n

CQL函數(shù) - 字符串函數(shù)
| 語(yǔ)法元素 | 描述 |
|---|---|
| UPPER | 轉(zhuǎn)大寫 |
| LOWER | 轉(zhuǎn)小寫 |
| SUBSTRING | 截取字符串 |
| REPLACE | 替換字符串 |
| ... |
這里拿其中一個(gè)做示例, 其他的可自行嘗試, 我們對(duì)book節(jié)點(diǎn)地name進(jìn)行截取
MATCH (b:Book) RETURN substring(b.name, 1, 3)

聚合函數(shù)
| 語(yǔ)法元素 | 描述 |
|---|---|
| COUNT | match返回的行數(shù) |
| MAX | match返回的最大值 |
| MIN | match返回的最小值 |
| SUM | match返回的求和 |
| AVG | match返回的平均值 |
關(guān)系函數(shù)
關(guān)系函數(shù)的作用主要是獲取開(kāi)始節(jié)點(diǎn), 結(jié)束節(jié)點(diǎn), 節(jié)點(diǎn)的信息等
| 語(yǔ)法元素 | 描述 |
|---|---|
| STARTNODE | 開(kāi)始節(jié)點(diǎn) |
| ENDNODE | 結(jié)束節(jié)點(diǎn) |
| ID | 關(guān)系id |
| TYPE | 關(guān)系TYPE的字符串 |
示例: 我們可以查看購(gòu)買關(guān)系的開(kāi)始節(jié)點(diǎn):
MATCH p=()-[r:`購(gòu)買`]->() RETURN startnode(r)

到這里, CQL一些簡(jiǎn)單的使用就暫時(shí)告一段落了, 下一篇將介紹如何整合spring data neo4j。