精华 02 cypher模式查询
发布于 5 年前 作者 wxw13637906414 2377 次浏览 来自 分享

节点与关系组合在一起形成一个模式,如:(n:notice)-[r:quote]->(n2:notice)

2.1 基本用法

2.1.1 关系查找

例1:查询政策(id=9b116c59723cd7a704a6913f35b69cc9)的所有相关联的节点

match(n:notice{id:“9b116c59723cd7a704a6913f35b69cc9”})–(m) return m

例2:查询政策(id=9b116c59723cd7a704a6913f35b69cc9)引用的所有节点

match(n:notice{id:“9b116c59723cd7a704a6913f35b69cc9”})-[:quote]->(m) return m

例3:查询引用政策(id=9b116c59723cd7a704a6913f35b69cc9)的所有节点

match(m)-[:quote]->(n:notice{id:“9b116c59723cd7a704a6913f35b69cc9”}) return m

例4:查询政策(id=9b116c59723cd7a704a6913f35b69cc9)的附件或者引用文章

match(n)-[:attach | :quote]->(m) where n.id=“9b116c59723cd7a704a6913f35b69cc9” return m

例5:关系里有特殊字符时,用符号 ` 括起来(不建议取名带特殊字符和关键词)

match(n)-[:TYPE WITH SPACE]->(m) return m

2.1.2 路径查询

例1:查询所有含有引用关系的通告与通告的关系图

match(a:notice)-[r:quote]->(b:notice) return a,r,b

例2:查询通告(id=9b116c59723cd7a704a6913f35b69cc9)引用长度为2到3的路径

match pth=(a:notice{id:“9b116c59723cd7a704a6913f35b69cc9”})-[:quote*2…3]-(b:notice) return pth

例3:查询政策(id=9b116c59723cd7a704a6913f35b69cc9)与政策(id=dc17c409a22489e88e7db5319058631c)之间的最短路径

match(n:notice{id:“9b116c59723cd7a704a6913f35b69cc9”}),(m:notice{id:“dc17c409a22489e88e7db5319058631c”}),p=shortestPath((n)-[*1…10]-(m)) return p

例4:在where中使用路径查询

match(n:notice{id:“9b116c59723cd7a704a6913f35b69cc9”}),(m) where m.category=“财政立法与执法” and (n)<–(m) return m

2.2 其他用法

2.2.3 模式变量

模式可以定义变量来接收,如:ak=(n:notice)-[r:quote]->(n2:notice),变量可以用于其他表达式

例1:查询政策(id=9b116c59723cd7a704a6913f35b69cc9)关联的所有节点

match ak=(n:notice{id:“9b116c59723cd7a704a6913f35b69cc9”})-[r]->(m) return NODES(ak)

2.2.4 map投射

例1:查询政策(id=9b116c59723cd7a704a6913f35b69cc9)的基本信息和他引用的所有通告信息

match(n)-[r:quote]->(m) where n.id=“9b116c59723cd7a704a6913f35b69cc9” return n {.id,.category,.created_date,articles:collect(m{.id,.category})}

2.2.5 with语法

with在cypher中起到管道的作用,可以将一个查询的输出连接到另一个查询的输入。

例1:查询每一篇通告引用的通告数

match(n:notice)-[r:quote]->(n2:notice) with n,count® as qs return n {.title,qs}

2.2.6 optional match

类似sql中的outer join操作

例1:查询政策(id=9b116c59723cd7a704a6913f35b69cc9)的关联节点

match(n:notice{id:“9b116c59723cd7a704a6913f35b69cc9”}) optional match (n)–(m) return n,m

2.2.7 foreach语句

例1:将政策(id=9b116c59723cd7a704a6913f35b69cc9)与政策(id=dc17c409a22489e88e7db5319058631c)引用路径上的所有节点加属性marked=true

match p=(n:notice{id:“9b116c59723cd7a704a6913f35b69cc9”})-[:quote*…10]->(m:notice{id:“dc17c409a22489e88e7db5319058631c”})

foreach ( nd in nodes§ | set nd.marked=true )

回到顶部