條件表達式數據庫
CASE test
WHEN value THEN result
[WHEN ...]
[ELSE default]
ENDspaCASE
WHEN predicate THEN result
[WHEN ...]
[ELSE default]
END字符串
match(n:User)
where n.id = 1
return case n.id when 1 then '管理員' else '普通人員' end as resultit
match(n:User)
where n.id = 1
return case when n.id=1 then '管理員' else '普通人員' end as resultio
// 查詢全部節點test
match (n)
return n搜索
//節點和屬性過濾數據
match (me)
where me.id = 1 and me:User
return me項目
//檢查【節點】【屬性】的存在性查詢
match (me)
where exists(me.age)
return me
//字符串匹配(區分大小寫)
match (u)
where u.name starts with 'a' and u.name ends with 'z' or u.name contains 'zs'
return u
// 匹配多種關係中的一種 , 使用 |
match (n) -[r :ORG | :DEP]-> ()
return n
// 返回類型類型
match (n) -[r]- ()
return type(r)
//返回標籤類型
match (n:User)
where n.id = 1
return labels(n)
//返回多個類型 【我朋友的朋友】
match (me:User) -->(friend:User) --> (friend_of_friend:User)
return friend_of_friend
可變長關係 -[:TYPE * minHops .. maxHops]->
// 返回 1 至 2 跳的之內的用戶
match (me:User{id:1}) -[*1..2]->(n:User)
return n
// 返回 0跳用戶,就是返回本身
match (me:User{id:1}) -[*0]->(n:User)
return n
//返回至少有 2跳的用戶
match (me:User) -[*2..]-> (n:User) // -[*2..]-> 等於 -[*2]->
return me
//返回小於 2跳的用戶, 注意不包含 0跳用戶, 若是要包含應該是 -[*0..2]->
match (me:User) -[*..2]->(n:User) // -[*..2]-> 等於 -[*1..2]->
return me
// 返回數據庫中節點的id。 注意neo4j 會重用已經刪除的節點的id
match (me:User)
where me.id = 3
return id(me)
返回指定用戶的全部關係
match (u1:User) -[*]-> (u2:User)
where u1.id = 1 // -[*]-> 表示跳數不限制
return *
match (u1:User) --> (u2:User) where u1.id = 1 return * //只表示返回用戶自己,及其1跳的用戶
返回找到指定用戶,返回跳數大於2的路徑
match p=(u1:User)-[*2]->(u2:User)
where u1.id = 1
return p
// 指定兩個節點,找出其最短路徑
match (u1:User),(u2:User),sp = shortestPath((u1)-[*]->(u2))
where u1.id = 1 and u2.id = 3
return sp
//帶斷言的最短路徑
//全部最短路徑
match (u1:User),(u2:User),p = allShortestPaths((u1) -[*]-> (u2) )
where u1.id = 1 and u2.id = 3
return p
//模式過濾,注意 where 中的模式是過濾 match 以後的結果
match (u),(o)
where u.id in [1,2] and not (u)-->(o)
return *
optinal match
用於搜索模式中描述的匹配項,對於找不到的項目用null 代替
match (me:User) where me.id = 32 optional match (me)-->(o) return o