Cypher查询语言--Neo4j-WHERE(三)
目錄
Where
如果需要從查找的數(shù)據(jù)的圖中過濾,可以在查詢語句中添加where子句。
圖:
?
Boolean 操作類型
可以使用boolean操作符and 和 or 或者也可以使用not()函數(shù)。
查詢:
START n=node(3, 1)
WHERE (n.age < 30 and n.name = "Tobias") ornot(n.name = "Tobias")
RETURN n
返回節(jié)點(diǎn)。
結(jié)果:
?
節(jié)點(diǎn)屬性上的過濾
查詢:
START n=node(3, 1)
WHERE n.age < 30
RETURN n
結(jié)果:
?
正則表達(dá)式
可以通過使用=~ /regexp/來匹配正在表達(dá)式。如下:
查詢:
START n=node(3, 1)
WHERE n.name =~ /Tob.*/
RETURN n
返回名叫Tobias的節(jié)點(diǎn)。
結(jié)果:
?
轉(zhuǎn)義正則表達(dá)式
如果在正則表達(dá)式中需要有斜杠時(shí)可以通過轉(zhuǎn)義實(shí)現(xiàn)。
查詢:
START n=node(3, 1)
WHERE n.name =~ /Some\/thing/
RETURN n
沒有匹配的節(jié)點(diǎn)返回。
結(jié)果:
不分大小些正則表達(dá)式
在正則表達(dá)式前加上?i,整個(gè)正則表達(dá)式將會(huì)忽略大小寫。
查詢:
START n=node(3, 1)
WHERE n.name =~ /(?i)ANDR.*/
RETURN n
屬性name為Andres的節(jié)點(diǎn)將返回
結(jié)果:
?
關(guān)系類型上的過濾
可以match模式中通過添加具體的關(guān)系類型,但有時(shí)需要針對類型的更加高級的過濾。可以使用明確的type屬性來對比,查詢對關(guān)系類型名作一個(gè)正則比較。
查詢:
START n=node(3)
MATCH (n)-[r]->()
WHERE type(r) =~ /K.*/
RETURN r
關(guān)系整個(gè)以K開始的類型名都將返回。
結(jié)果:
?
屬性存在性
查詢:
START n=node(3, 1)
WHERE n.belt
RETURN n
結(jié)果:
如果缺失屬性默認(rèn)為true
僅當(dāng)屬性存在時(shí),比較一個(gè)圖的元素的此屬性,使用允許空屬性的語法。
查詢:
START n=node(3, 1)
WHERE n.belt? = 'white'
RETURN n
所有節(jié)點(diǎn)即使沒有belt屬性的 都將返回。此類比較返回為true。
結(jié)果:
?
如果缺失屬性默認(rèn)為false
需要在缺失屬性時(shí)為false,即不想返回此屬性不存在的節(jié)點(diǎn)時(shí)。使用感嘆號。
查詢:
START n=node(3, 1)
WHERE n.belt! = 'white'
RETURN n
結(jié)果:
?
空置null過濾
有時(shí)候需要測試值或者標(biāo)識符是否為null。與sql類似使用 is null 或 not(is null x)也能起作用。
查詢:
START a=node(1), b=node(3, 2)
MATCH a<-[r?]-b
WHERE r is null
RETURN b
Tobias節(jié)點(diǎn)沒有鏈接上。
結(jié)果:
?
關(guān)系過濾
為過濾兩點(diǎn)間基于關(guān)系的子圖,在match子句中使用限制部分。可以描述帶方向的關(guān)系和可能的類型。這些都是有效的表達(dá):WHERE a-→b WHERE a←-b WHERE a←[:KNOWS]-bWHERE a-[:KNOWS]-b
查詢:
START a=node(1), b=node(3, 2)
WHERE a<--b
RETURN b
Tobias節(jié)點(diǎn)沒有鏈接
結(jié)果:
轉(zhuǎn)載于:https://www.cnblogs.com/divenswu/p/3441755.html
總結(jié)
以上是生活随笔為你收集整理的Cypher查询语言--Neo4j-WHERE(三)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java原来如此-随机数
- 下一篇: Unity3D4.* NGUI制作动态字