With用法示例

with从句可以连接多个查询的结果,即将上一个查询的结果用作下一个查询的开始。
两种用法:
1、通过使用oder by 和limit,with可以限制传入下一个match子查询语句的实体数目。
2、对聚合值过滤。
具体示例如下:

1.1 对聚合结果过滤

MATCH (david { name: "David" })--(otherPerson)-->()  
WITH otherPerson, count(*) AS foaf
WHERE foaf > 1
RETURN otherPerson

代码块解释:(1)match与”David”关联(无向)的otherPerson;(2)然后return出度大于1的otherPerson。

1.2 对collect的元素进行排序

MATCH (n)
WITH n
ORDER BY n.name DESC LIMIT 3
RETURN collect(n.name)

代码块解释:(1)match所有人;(2)对所有人的name进行降序排列,并取top-3;(3)返回top-3的name并组成collect:返回结果为:[“Emil”,”David”,”Ceasar”]

1.3 在路径搜索的时候限制分支数

MATCH (n { name: "Anders" })--(m)
WITH m
ORDER BY m.name DESC LIMIT 1
MATCH (m)--(o)
RETURN o.name

代码块解释:(1)从”Anders”出发,找到关联(无向)的所有人的集合m;(2)对集合m按照name降序排列,取top-1;(3)返回与top-1关联(无向)的所有人的name。

最近翻了很多 Neo4j 查询 语句,但一般讲解如何使用的比较多,讲语法理解的比较少。因此,结合自己自建的图书知识图谱,对匹配语句match...return...的语法做一个入门级的解释。 讨厌用字符串编写 查询 吗? neo4j -kt是针对Kotlin和用户的用于 查询 语言的DSL。 当与集成时, neo4j -kt是用于描述和执行对图形数据库的 查询 的强大工具。 看一下。 描述节点,关系和 复杂 查询 变得像馅饼一样容易: class Restaurant ( val name : String , val food : String , val workers : Map < String>) val rest = Restaurant ( " Harakiri " , " Sushi " , mapOf ( " chefs " to 1 , " cooks " to 10 , " waiters " to 70 )) val req = create { + node( " rest " , " Restaurant " ) { WITH 用于向后面的语句传递指定结果,并可以改变结果集中实体的形式和数量。注意,WITH 会影响 查询 结果集里的变量,WITH 语句外的变量不会传递到后续 查询 中。 对结果进行筛选 # 聚合函数进行筛选, 这句话表达的是David连接过去的节点,它向外连接关系大于1的那个节点 match(David{name: 'David'}) --(otherPerson)-->() with otherPerson, count(*) as cnt where cnt > 1 return other “ Cypher ”是一个描述性的图形 查询 语言,允许不必编写图形结构的遍历代码对图形存储有表现力和效率的 查询 Cypher 还在继续发展和成熟,这也就意味着有可能会出现语法的变化。同时也意味着作为组件没有经历严格的性能测试。 Cypher 设计的目的是一个人类 查询 语言,适合于开发者和在数据库上做点对点模式(ad-hoc) 查询 的专业操作人员(我认为这个很重要)。它的构念是基于英语单词和灵巧的图解。Cyper通过一系列不同的方法和建立于确定的实践为表达 查询 而激发的。许多关键字如like和orderby是受SQL的启发。模式匹配的表达式来自于SPARQL。正则表达式匹配实现实用Scalaprogramming © 2019 Neo4j , Inc. License: Creative Commons 4.0 This is the Cypher manual for Neo4j version 3.5, authored by the Neo4j Team. This manual covers the following areas: • Introduction — Introducing the Cypher query language. • Syntax — Learn Cypher query syntax. • Clauses — Reference of Cypher query clauses. • Functions — Reference of Cypher query functions. • Schema — Working with indexes and constraints in Cypher . • Query tuning — Learn to analyze queries and tune them for performance. • Execution plans — Cypher execution plans and operators. • Deprecations, additions and compatibility — An overview of language developments across versions. • Glossary of keywords — A glossary of Cypher keywords, with links to other parts of the Cypher manual. • Cypher styleguide — A guide to the recommended style for writing Cypher queries. Who should read this? This manual is written for the developer of a Neo4j client application. 和Oracle中with的用法相似,把with后面结果集当成一个 查询 结果、在这个结果基础上再做where条件的筛选 比如下面这个语句: 查询 所有电影集、每个电影至少有8个以上的演员参演。 with o,count(r) as count_r,以这个为结果集、然后在此基础上筛选出count_r大于8的 查询 所有电影集、每个电影至少有8个以上的演员参演。 把with后面结果集当成一个 查询 结果、在这个结果基础上再做where条件的筛选 语句:MATCH (n:Person)-[r:ACTED_IN]->(o:Movie) with o,count® as count_r where count_r > 8 RETURN o https://blog.csdn.... Cypher 查询 语言的简介 cypher 是数据库用语,不用编写 复杂 查询 代码即可实现对图数据库的操作。 Cypher 是一种声明性的图 查询 语言,允许对图进行高效的 查询 、更新和管理。它的设计适合开发人员和操作专业人员。 Cypher 的设计简单,但功能强大;高度 复杂 的数据库 查询 可以很容易地表示,使您能够专注于您的领 变量用于对搜索模式的部分进行命名,并在同一个 查询 中引用,在小括号()中命名变量,变量名是区分大小写的,示例代码创建了两个变量:n和b,通过return子句返回变量b; MATCH (n)–>(b) RETURN b 在 Cypher 查询 中,变量用于引用搜索模式(Pattern),但是变量不是必需的,如果不需要引用,那么可以忽略变量。 在 Cypher 查询 中,通过逗号来访问属性..