`
hugh.wangp
  • 浏览: 293502 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Neo4j-Cypher查询语言-模式(Patterns)

阅读更多
模式是Cypher非常核心的东西,它在很多地方被用到。利用模式,你可以描述你要找的数据是什么样子。模式是被用在MATCH子句中。路径模式是表达式。Since these expressions are collections, they can also be used as predicates (a non-empty collection signifies true)。他们被用来CREATE/CREATE UNIQUE一个图。
所以,理解模式非常重要。
当你申明一个模式时,Cypher会指出怎么获取数据。想法是编写查询,指定你想要的模式,你就能够利用这些值创建你想要的结果。
模式必须有个开始节点,模式必须要作用在图节点集合或者图关系集合上。所有模式都要直接或者间接地和开始节点关联起来。一个没有任何开始节点的模式都会被拒绝

 

相关节点的模式(Patterns for related nodes)
模式是由一个或者多个路径组成,路径直接用逗号分隔。一个路径就是一个节点和关系的序列,这个序列指定开始和结束的节点。例如(a)-->(b)

这个路径开始于节点a,通过outgoing关系指向节点b

路径可以随意地长,并且同一个节点可能在路径的不同部分出现
节点标识可以带括号,也可以不带括号: a-->b和(a)-->(b)完全一样
如果你不在乎具体是哪个节点,不用指定它,只需用空括号来表示就OK了:a-->()-->b

结合关系的模式(Working with relationships)
如果需要指定两个节点之间的关系,可以如下做:a-[r]->b
如果你不在乎关系的方向,你可以省去关系的箭头:a--b
当你只关注特定关系类型时,你可以这么做:a-[:REL_TYPE]->b
你也可以指定多个关系类型,罗列各个关系,用管道符号"|"连接:a-[r:TYPE1|TYPE2]->b。这个模式就是在节点a到节点b匹配关系TYPE1或者TYPE2。这两个关系的别名为r。多关系类型不能用在CREATE和CREATE UNIQUE子句中

可选关系(Optional relationships)
当关系存在,可选关系就能匹配到数据,但是不存在关系,则返回null。与SQL的外关联类似,Cypher如果匹配到关系,返回数据,如果没有匹配到返回null。可选关系只能用在MATCH子句中。
可选关系用"?"标识,例如:

Query

1
2
3
START me=node(*)
MATCH me-->friend-[?]->friend_of_friend
RETURN friend, friend_of_friend
这个语句是找到任何节点的朋友,及朋友的朋友(如果有的话)。
可选是传递的,如果模式的一部分是由可选关系得到的,那么这部分也是可选的,如上查询,friend和friende_of_friend的关系是可选的,那么friend_of_friend也是可选的。
同时,一个路径包含了可选的部分,那么这个路径也是可选的--如果一个路径的任一部分是null,那么这个路径也是null
下面的例子中,b和p都是可选的:

Query

1
2
3
START a=node(4)
MATCH p = a-[?]->b
RETURN b

Query

1
2
3
START a=node(4)
MATCH p = a-[?*]->b
RETURN b

Query

1
2
3
START a=node(4)
MATCH p = a-[?]->x-->b
RETURN b

Query

1
2
3
START a=node(4), x=node(3)
MATCH p = shortestPath( a-[?*]->x )
RETURN p

控制关系的深度(Controlling depth)
一个模式关系可以跨越多重的图关系,这种关系叫做可变深度关系。这种关系用"*"标识:(a)-[*]->(b),这表示从节点a开始到节点b,中间是一种outgoing的关系,但不限定经过几次关系找到节点b。这是一个比较重的查询,依托于图的结构,可能遍历很多层关系,也可能遍历很少的关系。
不过,可以设置关系匹配的最短路径和最长路径,关系标识为:-[:relType*minStep..maxStep]->
例如:(a)-[*3..5]->(b) 表示从a到b包含最少3层关系,最多5层关系
可变深度关系不能用于CREATE或CREATE UNIQUE

指定路径标识符(Assigning to path identifiers)
在图数据库里,路径是很重要的概念。路径是一个节点与关系的集合,描述图中的一个路径信息。可以用路径标识符指定一个路径:p=(a)-[*3..5]->(b)
可以在MATCH,CREATE和CREATE UNIQUE子句中,但模式作为表达式时不能使用。在如下的一个查询中看下如何用于这三个子句中

Query

1
2
3
4
5
START me=node(3)
MATCH p1 = me-[*2]-friendOfFriend
CREATE p2 = me-[:MARRIED_TO]-(wife {name:"Gunhild"})
CREATE UNIQUE p3 = wife-[:KNOWS]-friendOfFriend
RETURN p1,p2,p3

设置属性(Setting properties)
节点和关系是重要的,但是Neo4j在节点和关系上使用属性,也可以用于稠密图模型(Neo4j uses properties on both of these to allow for far denser graphs models)
单个属性在模式中用Map结构来表示,属性集合是把各个Map形式的属性放在大括号里,各个属性直接用逗号隔开:{ name: "Andres", sport: "BJJ" }。如果一个属性(Map)参数化(paramName),那属性集合可以这样表示{paramName}
Maps只能用在CREATE和CREATE UNIQUE子句中。
在CREATE子句中,用于设置节点或者关系的属性。
在CREATE UNIQUE子句中,它用于匹配图中相关的元素,可能成功,也可能不成功。如果模式元素中的属性能绝对匹配图中元素的属性(图元素可以有多余的其他属性,但不影响匹配),那么匹配成功。如果在图元素中没有找到模式中的属性,那么这些属性就用来设置新创建元素的属性。
  • 大小: 20.6 KB
分享到:
评论

相关推荐

    neo4j-cypher-manual-4.0.pdf

    Neo4j是一种图形数据库,它使用Cypher查询语言进行数据的查询、更新和管理。Cypher是一种声明性的图形查询语言,它允许用户对图形进行表达式丰富且高效的查询、更新和管理。Cypher的设计既适合开发者,也适合运营...

    Neo4j-Cypher-Quick-Reference

    **Neo4j-Cypher-Quick-Reference** 是一套针对新手的快速入门参考资料,它主要聚焦于使用 **Cypher** 查询语言在 **Neo4j** 图数据库中的操作。Cypher 是一种声明式图形查询语言,设计简洁易读,非常适合处理复杂的...

    neo4j-cypher-manual-3.5

    neo4j-cypher-manual-3.5 Cypher is a declarative graph query language that allows for expressive and efficient querying and updating of the graph. It is designed to be suitable for both developers and ...

    neo4j-community-5.11.0-windows.zip

    3. **neo4j-cypher-logical-plans-5.11.0.jar**:Cypher是Neo4j的图形查询语言,用于查询和操作图形数据。此文件包含了逻辑计划解析器,是执行Cypher查询的核心部分。 4. **neo4j.conf**:这是Neo4j的主配置文件,...

    neo4j-community-3.5.3-windows和neo4j-community-4.1.3-windows

    neo4j-community-3.5.3-windows和neo4j-community-4.1.3-windows安装包以及对应JDK文件 关联博客地址:https://editor.csdn.net/md/?articleId=109287701 博客中有百度网盘地址,如果失效,留言或私信联系即可

    neo4j-community-4.4.25-windows

    8. `neo4j-command-line-4.4.25.jar`:Neo4j命令行工具,用于启动、停止数据库服务,执行管理任务,以及运行Cypher查询。 9. `neo4j.bat`:Windows下的启动脚本,用于启动Neo4j服务。 10. `Neo4j-Management\Get-...

    neo4j-community-3.5.14-unix.tar.gz

    总的来说,`neo4j-community-3.5.14-unix.tar.gz`是一个在Linux服务器上部署的图形数据库解决方案,涉及的技术点包括Neo4j的安装、配置、启动、数据管理以及Cypher查询语言的使用。正确安装并配置后,你可以利用其...

    neo4j-community-4.x-unix.tar.gz and neo4j-community-4.x-windows.zip

    neo4j图数据库4.x版本,包括neo4j-community-4.x-unix.tar.gz and neo4j-community-4.x-windows.zip和neo4j-graph-data-science-1.2.2-standalone算法库

    neo4j cypher帮助文档

    从Cypher查询语言的介绍和基础语法,到子句、函数和模式的具体使用,再到查询性能的优化、执行计划的解读以及版本更新的兼容性处理,这份手册为Neo4j开发者提供了全面的指导。通过深入学习和实践,开发者可以充分...

    neo4j-cypher-refcard-2.1.4

    Neo4j是一个领先的图形数据库系统,而Cypher是Neo4j的声明式查询语言,用于图形数据库中的数据操作。Cypher设计用于直观地表达图形数据的模式,并高效地处理图形结构的查询。通过Cypher,开发者可以使用简明的语法来...

    neo4j-community-4.0.4-windows.zip

    Cypher是一种声明式图形查询语言,语法简洁且直观,使得开发者能够轻松地进行数据查询、更新和操作。例如,你可以用Cypher找到两个节点间的最短路径,或者找出特定节点的所有关联。 安装"neo4j-community-4.0.4...

    neo4j-community-3.5.5-unix.tar.gz

    总结,"neo4j-community-3.5.5-unix.tar.gz"提供了在Linux环境中运行Neo4j社区版的机会,你可以通过学习Cypher,实践图形数据建模,深入了解知识图谱的构建与管理,同时享受图形数据库带来的高效数据处理体验。...

    neo4j-community-3.5.19-windows.rar

    在Neo4J中,Cypher是一种声明式查询语言,类似于SQL,但专门用于图形数据。用户可以通过Cypher创建、删除、查询节点和关系,以及更新属性。例如,创建一个新节点的语句是`CREATE (n:Label {prop1: 'value1', prop2: ...

    neo4j-community-4.2.1-windows下载

    - **Cypher查询语言**:一种声明式的、类似SQL的查询语言,用于简洁、高效的查询和操作图形数据。 - **ACID事务**:支持原子性、一致性、隔离性和持久性,确保数据的一致性和可靠性。 - **图形模型的直观性**:...

    neo4j-community-3.5.31-windows

    2. **Cypher查询语言**:Cypher是一种声明式、图形化的查询语言,类似于SQL,但专为图形数据设计。它允许用户以直观的方式查询和更新数据,如查找特定节点间的路径或修改节点属性。 3. **ACID事务**:Neo4j 支持强...

    neo4j-community-3.5.3-unix.tar.gz安装

    在本篇中,我们将详细介绍如何在Unix-like系统上安装`neo4j-community-3.5.3-unix.tar.gz`版本。 **一、下载与解压** 首先,你需要从官方渠道下载 Neo4j 的社区版安装包`neo4j-community-3.5.3-unix.tar.gz`。下载...

    neo4j-community-4.4.37-windows.zip

    neo4j-community-4.4.37-windows.zip

    neo4j-community-3.5.5

    标题“neo4j-community-3.5.5”指的是Neo4j数据库的一个社区版本,具体是3.5.5更新。Neo4j是一款强大的图形数据库系统,尤其适用于处理具有复杂关系的数据,例如社交网络、知识图谱、推荐系统等。在IT领域,图形...

    neo4j-community-3.5.5-windows.zip

    标题中的"neo4j-community-3.5.5-windows.zip"表明这是 Neo4j 社区版的3.5.5版本,专为Windows操作系统设计。这个压缩包是为了方便用户快速下载,避免官方下载速度慢的问题。 在深入讲解 Neo4j 之前,我们先了解...

    neo4j-community-5.23.0-windows.zip

    neo4j-community-5.23.0-windows.zip

Global site tag (gtag.js) - Google Analytics