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
查询
中,通过逗号来访问属性..