cypher相关

一、查询语法

1、单维度查询

MATCH 
  (node)-[relationship]->(node)
WHERE 
  (node|RELATIONSHIP)
RETURN 
  (node|RELATIONSHIP)

举例:

查询实体

//n:Check的别名 LIMIT限制展示的节点数量
MATCH (n:Check) RETURN n LIMIT 10

查询关系

MATCH p=()-[:acompany_with]-() RETURN p LIMIT 10

查询实体和关系

MATCH
  (n:Disease)-[:belongs_to]->(d:Department)
RETURN
  n, d
LIMIT 10

带有where条件的查询

MATCH 
  (n:Disease)-[:belongs_to]->(d:Department)
WHERE
  (d.name="内科")
RETURN 
  n, d
LIMIT 10

MATCH 
  (n:Disease)-[r:belongs_to]->(d:Department)
WHERE
  (d.name="内科")
RETURN 
  n, r, d
LIMIT 10

2、多维度关系查询

MATCH
  (d1:Disease)-[a:acompany_with]->(d2:Disease)-[b:belongs_to]->(d3:Department)
WHERE
  d3.name = '内科'
RETURN
  d1, a, d2, b, d3
LIMIT 10

3、正则查询

"~" 后面写正则表达式

MATCH (d:Disease) WHERE d.name=~'肺.*' RETURN d LIMIT 10

4、包含查询

MATCH (d:Disease) WHERE d.name CONTAINS '肺' RETURN d LIMIT 10

也可以自己写正则

MATCH (d:Disease) WHERE d.name=~'.*肺.*' RETURN d LIMIT 10

二、创建语法

1、创建实体和关系

创建不带属性的实体和关系

CREATE (p:Person)-[r:has_disease]->(d:Disease)

MATCH (p:Person)-[r:has_disease]->(d:Disease) RETURN p,r,d

创建带有属性的实体和关系

CREATE (p:Person{name:"小宋"}) RETURN p

CREATE (p:Person{name:"小李"})-[r:has_disease{level:"严重"}]->(d:Disease{name:"发烧"})

MATCH (p:Person)-[r:has_disease]-(d:Disease) WHERE d.name="发烧" RETURN p,r,d

给没有关系的实体创建关系

MATCH (d1:Disease{name:"感冒"}),(d2:Disease{name:"发烧"}) CREATE (d1)-[r:has_symptom]->(d2) RETURN d1,r,d2

merge vs create

merge:若存在该条关系,则不重复创建;若不存在该条关系,则创建该条关系。

create:不管存不存在该条关系,都创建。所以当该条关系存在时,会重复创建该关系。

MATCH (d1:Disease{name:"感冒"}),(d2:Disease{name:"发烧"}) MERGE (d1)-[r:has_symptom]->(d2) RETURN d1,r,d2

MATCH (d1:Disease{name:"感冒"}),(d2:Disease{name:"发烧"}) MERGE (d1)-[r:acompany_with]->(d2) RETURN d1,r,d2

MATCH (d1:Disease{name:"感冒"}),(d2:Disease{name:"发烧"}) CREATE (d1)-[r:acompany_with]->(d2) RETURN d1,r,d2

2、创建类

为实体新增类别

MATCH (d:Disease{name:"感冒"}) SET d:Symptom RETURN d

3、创建属性

为实体添加属性

MATCH (d:Disease) WHERE d.name="感冒" SET d.后遗症="无" RETURN d

为关系添加属性

MATCH (d:Disease{name:"感冒"})-[r:has_symptom]-(s:Symptom{name:"流鼻涕"}) RETURN d,r,s

MATCH (d:Disease{name:"感冒"})-[r:has_symptom]-(s:Symptom{name:"流鼻涕"}) SET r.发作时间=1 RETURN d,r,s

三、删除语法

1、删除关系

MATCH (d1:Disease{name:"发烧"})-[r]-(d2:Disease{name:"感冒"}) RETURN d1,r,d2

MATCH (d1:Disease{name:"发烧"})-[r:acompany_with]-(d2:Disease{name:"感冒"}) DELETE r

MATCH (d1:Disease{name:"发烧"})-[r]-(d2:Disease{name:"感冒"}) RETURN d1,r,d2

2、删除实体

删除带有关系的实体

若直接删除该实体,会报错,提示该实体还存在关系。

MATCH (d:Disease{name:"发烧"}) DELETE d

//删除该实体及该实体带的所有关系
MATCH (d1)-[r]-(d2:Disease{name:"发烧"}) DELETE r,d2

删除孤立实体

MATCH (p:Person) WHERE p.name="小宋" DELETE p

3、删除类的所有实体

若类中的实体和其他类的实体存在关系,则不能直接单独删除该类。

首先删除跟其他类有关系的该类的实体及这些实体和其他类的关系,再删除和其他类没有关系的该类的实体。

4、删除属性

MATCH (d:Disease{name:"感冒"})-[r:has_symptom]-(s:Symptom{name:"流鼻涕"}) REMOVE r.发作时间 RETURN d,r,s

MATCH (d:Disease{name:"感冒"}) REMOVE d.后遗症 RETURN d

5、删除实体所属的类别

MATCH (d:Disease{name:"感冒"}) REMOVE d:Symptom RETURN d

 

四、更改语法

不能直接修改,只能先新增,后删除。

MATCH (n:User {name:"foo"})-[r:REL]->(m:User {name:"bar"})
CREATE (n)-[r2:NEWREL]->(m)
// copy properties, if necessary
SET r2 = r
WITH r
DELETE r

 

五、索引

索引是创建在属性上的,能提高查询速度。

创建索引

CREATE INDEX ON :Disease(name)

删除索引

DROP INDEX ON :Disease(name)

给某个属性创建唯一的索引

CREATE CONSTRAINT ON (d:Disease) ASSERT (d.name) IS UNIQUE

删除创建的唯一索引

DROP CONSTRAINT ON (d:Disease) ASSERT (d.name) IS UNIQUE

 

六、复杂查询

1、三度关系内带条件的查询

 

2、最短路径查询

//SHORTESTPATH 最短路径语法,*..10 十度关系内的最短路径
MATCH (d1:Disease{name:"感冒"}),(d2:Disease{name:"肺炎"}),p=SHORTESTPATH((d1)-[*..10]-(d2)) RETURN d1,p,d2

查询所有最短路径

MATCH (d1:Disease{name:"感冒"}),(d2:Disease{name:"肺炎"}),p=ALLSHORTESTPATHS((d1)-[*..10]-(d2)) RETURN d1,p,d2

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Cypher 是 Neo4j 图数据库的一种语言,用于查询和操作图数据。Cypher 类似于 SQL,但是专门用于处理图数据。它具有简单易用的语法,可以描述节点和关系之间的关系,支持高级查询和数据可视化。 例如,下面的 Cypher 查询将返回所有名为 "Alice" 的人: ``` MATCH (n:Person {name: "Alice"}) RETURN n; ``` 如果你想查看更多关于 Cypher 的信息和示例,可以访问 Neo4j 官网或者其他相关资料。 ### 回答2: Cypher Demo是一个展示Cypher查询语言功能的演示示例。Cypher是Neo4j图数据库的查询语言,用于为图数据库提供数据查询和操作。通过使用Cypher语言,我们可以轻松地从图数据库中检索、操纵和管理数据。 Cypher Demo提供了一个交互式界面,用户可以在该界面中输入Cypher查询语句并执行。演示示例通常会提供一些示例数据集,以供用户进行查询和操作的练习。在这些演示示例中,用户可以通过编写Cypher查询来探索和理解图数据库中存储的数据。 演示示例通常包含一些常见的查询场景,例如查找特定节点的属性、查找节点之间的关系、查找符合特定条件的节点等。在执行这些Cypher查询之后,用户可以查看查询的结果,并根据需要进行进一步的操作或分析。 Cypher Demo还可以帮助用户了解Cypher查询语言的语法和语义。用户可以通过观察演示示例中的查询语句和它们的结果来逐步学习和理解Cypher的用法。 总结来说,Cypher Demo是一个展示Cypher查询语言功能和用法的演示示例,它可以帮助用户熟悉和理解Cypher,并通过实践查询和操作图数据库中的数据。 ### 回答3: Cypher Demo是一个用于演示Cypher查询语言的示例。Cypher是一种专门用于图数据库Neo4j的查询语言,它允许用户在图中进行复杂的数据操作和查询。 在Cypher Demo中,我们可以通过一系列的示例来学习和理解Cypher的使用方法。首先,我们需要了解Cypher的基本语法和关键词。例如,通过使用MATCH关键词来定义一个查询模式,然后使用WHERE关键词来添加约束条件,最后使用RETURN关键词来返回我们感兴趣的结果。 在Cypher Demo中,我们可以学习如何创建节点和关系,如何查询特定节点或关系,如何使用属性查询,以及如何使用聚合函数进行计算。此外,我们还可以学习如何使用Cypher语句的管道操作符来进一步加工和组合查询结果。 在Cypher Demo的实例中,我们可能会看到一些示例数据,比如人员关系图或地理位置图。通过对这些示例数据的查询和操作,我们可以更好地理解Cypher查询语言的应用场景。 通过Cypher Demo,我们可以通过实际操作和练习来加深对Cypher查询语言的理解和熟练程度。这对于想要更好地利用图数据库进行数据分析、图形可视化和关系网络发现的人来说是非常有帮助的。 总结来说,Cypher Demo是一个教学工具,旨在通过示例和操作演示Cypher查询语言的使用方法和技巧,帮助用户更好地掌握和应用这种强大的图数据库查询语言。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值