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