目录
③ id 去除重复的关系起始点和终结点,且对任意两点间的关系,只记录1次a--b
一、图元素操作:查询、创建、删除
1、查询match
1.1 节点查询
1、只查有限数量的点
MATCH (n:Person) RETURN n LIMIT 25
2、查询所有点(包括无关系的孤立点)以及 点间的关系
MATCH (n)
OPTIONAL MATCH (n)-[r]->()
RETURN n, r
1.2 关系查询
1、无向查询(所有关系类型,包括a->b 和 b->a)
match (a:Company{name:"企业A"})-[r]-(b:Company{name:"企业C"}) return r
2、有向查询(只查a->b)
match (a:Company{name:"企业A"})-[r]->(b:Company{name:"企业C"}) return r
1.3 路径查询
(1) 指定关系类型
指定关系a-->b,就只能查询a-->b,不能查询b-->a
① 全量查询
MATCH (a:Company)-->(b:Company)
RETURN a.name AS 企业, b.name AS 关联企业, shortestPath((a)-[*]-(b)) AS 最短路径, length(shortestPath((a)-[*]-(b))) AS 最短路径长度
② 只针对特定的节点进行查询
可以在MATCH语句中添加更多的筛选条件,比如:
MATCH (a:企业 {name: '特定企业名'})-->(b:企业)
RETURN a.name AS 企业, b.name AS 关联企业, length(shortestPath((a)-[*]-(b))) AS 最短路径长度
如果点a在整个链路中与多个企业都有关系,那就会得到多条同一个a与不同b的数据。
只对节点a与其他企业节点之间的关系数量感兴趣,你可以通过计数这些记录来得到这个信息。例如:
MATCH (a:企业)-->(b:企业)
RETURN a.name AS 企业, count(b) AS 关联企业数量
(2)任意关系类型
`a-[*..3]-b`关系中没有带箭头,且关系用*号表示,则代表查找任何类型的关系, 包括a->b 和 b->a。
数字3:表示最多通过3级关系连接的节点。
① 全量数据
查询所有2级路径可达的节点、及相互关系。
MATCH path=(a:Company)-[*..2]-(b:Company)
RETURN a.name AS 企业, b.name AS 关联企业, path
这种查询方式会查出很多无意义的路径,比如三点关系类型是a->b,b->a,a->c,但这个查询会查出:a->b,b->a,a->c, a->b->a->c, 很明显a->b->a->c里出现了“回转到自身”。
② 只查看 通过指定层级 可相互关联的点:
DISTINCT 去除重复的关系起始点和终结点,分别保留a->b和b->a。
比如,查询通过2级关系 可关联起来的所有Company节点:
MATCH p=(a:Company)-[*..2]-(b:Company)
RETURN DISTINCT a, b
`COLLECT()`函数在Cypher查询语言中是一个聚合函数,它用于将多个值组合成一个列表。
MATCH (a:Company)-[:竞争]-(b:Company)

最低0.47元/天 解锁文章
2315

被折叠的 条评论
为什么被折叠?



