我是靠谱客的博主 专一项链,最近开发中收集的这篇文章主要介绍neo4j 函数使用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

原文链接: neo4j 函数使用

上一篇: neo4j py2neo 的简单使用

下一篇: python3 爬取电影信息

range用于产生一个序列
140122_c7lc_2856757.png
unwind 将列表序列转为列的数据形式

140250_xytu_2856757.png

对列表形式的序列无法使用类似求和和最小值等函数,需要转化之后才可以

140558_pwon_2856757.png

140431_zfi6_2856757.png
140721_ptcz_2856757.png

简单变量的使用

with range(0,5) as a, 3 as minval
return filter(i in a where i>minval)

141145_o39s_2856757.png

with 'n2' as
name
match (n)
where n.name=name
return n

142843_y4bg_2856757.png


case的使用,类似switch语句,注意使用end结尾

match (x)
return
case x.id%2
when 0
then '偶数'
else '奇数'
end
as ans

141814_ezyk_2856757.png

使用比较的方式

match (x)
return
case
when x.id<3
then '小'
when x.id>8
then '大'
else '中'
end
as ans

142208_cuop_2856757.png

运算符

For example:

a < b = c <= d <> e

Is equivalent to:

a < b AND b = c AND c <= d AND d <> e

类似Python的列表生成

145018_0nms_2856757.png

map的使用

145151_moko_2856757.png

map的查询

MATCH (actor:Person { name: 'Charlie Sheen' })-[:ACTED_IN]->(movie:Movie)
RETURN actor { .name, .realName, movies: collect(movie { .title, .year })}

match ,根据属性值查找节点

match (n:Node{id:1})
return n

与0 相连的点

151356_4oj4_2856757.png

找节点距离大于某个值的点和边

152958_nrr7_2856757.png

使用collect 将查询结果转为列表

153224_24eh_2856757.png

转化为不重复的列表

153335_owql_2856757.png

使用字典形式获取属性

WITH 'AGE' AS propname
MATCH (n)
WHERE n[toLower(propname)]< 30
RETURN n.name, n.age

检查属性是否存在

MATCH (n)
WHERE exists(n.belt)
RETURN n.name, n.belt

where 子句查询

MATCH (tobias { name: 'Tobias' }),(others)
WHERE others.name IN ['Andres', 'Peter'] AND (tobias)<--(others)
RETURN others.name, others.age

not

MATCH (persons),(peter { name: 'Peter' })
WHERE NOT (persons)-->(peter)
RETURN persons.name, persons.age

寻找无连接的点

154548_ayfk_2856757.png

寻找存在指定的边

MATCH (n)
WHERE (n)-[:KNOWS]-({ name: 'Tobias' })
RETURN n.name, n.age

过滤属性和标签

MATCH (n)-[r]->()
WHERE n.name='Andres' AND type(r)=~ 'K.*'
RETURN type(r), r.since

与list的 操作

MATCH (a)
WHERE a.name IN ['Peter', 'Tobias']
RETURN a.name, a.age

缺失属性和值

MATCH (n)
WHERE n.belt = 'white' OR n.belt IS NULL RETURN n.name, n.age, n.belt
ORDER BY n.name

查找最短路,边数最少的,而不是加权最小的

只查找一条

match (d{id:0}),(e{id:9})
MATCH p = shortestPath( (d)-[*..15]->(e) )
return [i in nodes(p)| i.id]

查找所有,无方向

match (d{id:0}),(e{id:9})
MATCH p = allShortestPaths( (d)-[*..15]-(e) )
return [i in nodes(p)| i.id]

155852_yonz_2856757.png

排序

MATCH (n)
RETURN n.name, n.age
ORDER BY n.name DESC

随机数

return rand()

寻找路径

161552_plls_2856757.png

使用foreach设置路径上的属性

MATCH p =(begin)-[*]->(END )
WHERE begin.name = 'A' AND END .name = 'D'
FOREACH (n IN nodes(p)| SET n.marked = TRUE )

all

All(标识符 in iterable where 判断)

参数:

Ø  iterable :一个集合属性,或者可迭代的元素,或一个迭代函数。

Ø  标识符:可用于判断比较的标识符。

Ø  判断:一个测试所有迭代器中元素的判断。

查询:

START a=node(3), b=node(1)

MATCH p=a-[*1..3]->b

WHERE all(x in nodes(p) WHERE x.age > 30)

RETURN p

过滤包含age〈30的节点的路径,返回符合条件路径中所有节点。

Any

语法:ANY(identifierin iterable WHERE predicate)

参数:

Ø  Iterable(迭代器):一个集合属性,或者可迭代的元素,或一个迭代函数。

Ø  Identifier(标识符):可用于判断比较的标识符。

Ø  Predicate(判断):一个测试所有迭代器中元素的判断。

查询:

START a=node(2)

WHERE any(x in a.array WHERE x = "one")

RETURN a

None

在迭代器中没有元素判断将返回true。

语法:NONE(identifierin iterable WHERE predicate)

Ø  Iterable(迭代器):一个集合属性,或者可迭代的元素,或一个迭代函数。

Ø  Identifier(标识符):可用于判断比较的标识符。

Ø  Predicate(判断):一个测试所有迭代器中元素的判断。

查询:

START n=node(3)

MATCH p=n-[*1..3]->b

WHERE NONE(x in nodes(p) WHERE x.age = 25)

RETURN p

Single

如果迭代器中仅有一个元素则返回true。

语法:SINGLE(identifierin iterable WHERE predicate)

参数:

Ø  Iterable(迭代器):一个集合属性,或者可迭代的元素,或一个迭代函数。

Ø Identifier(标识符):可用于判断比较的标识符。

Ø Predicate(判断):一个测试所有迭代器中元素的判断。

查询:

START n=node(3)

MATCH p=n-->b

WHERE SINGLE(var in nodes(p) WHERE var.eyes = "blue")

RETURN p

集合操作与python类似

163454_rxoe_2856757.png

最后

以上就是专一项链为你收集整理的neo4j 函数使用的全部内容,希望文章能够帮你解决neo4j 函数使用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部