neo4j cypher查询

这篇具有很好参考价值的文章主要介绍了neo4j cypher查询。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 创建节点和关系

 

使用CREATE命令创建节点和关系。例如,要创建一个名为“John”的人节点,可以使用以下命令:

 

```

CREATE (:Person {name: 'John'})

```

 

这将创建一个类型为“Person”的节点,并将其属性“name”设置为“John”。

 

要创建一个名为“likes”的关系,将“John”节点连接到“Mary”节点,可以使用以下命令:

 

```

MATCH (p1:Person {name: 'John'}), (p2:Person {name: 'Mary'})

CREATE (p1)-[:likes]->(p2)

```

 

这将创建一个类型为“likes”的关系,将“John”节点与“Mary”节点连接起来。

 

2. 查询节点和关系

 

使用MATCH命令查询节点和关系。例如,要查找所有名为“John”的人节点,可以使用以下命令:

 

```

MATCH (p:Person {name: 'John'})

RETURN p

```

 

这将返回一个名为“p”的变量,其中包含所有匹配条件为“name为John”的“Person”节点。

 

要查找所有与“John”节点连接的节点,可以使用以下命令:

 

```

MATCH (p1:Person {name: 'John'})-[:likes]->(p2:Person)

RETURN p2

```

 

这将返回一个名为“p2”的变量,其中包含所有与“John”节点通过“likes”关系连接的“Person”节点。

 

3. 更新节点和关系

 

使用SET命令更新节点和关系的属性。例如,要将“John”节点的“age”属性设置为“30”,可以使用以下命令:

 

```

MATCH (p:Person {name: 'John'})

SET p.age = 30

```

 

这将更新所有匹配条件为“name为John”的“Person”节点的“age”属性。

 

要删除“John”节点与“Mary”节点之间的“likes”关系,可以使用以下命令:

 

```

MATCH (p1:Person {name: 'John'})-[r:likes]->(p2:Person {name: 'Mary'})

DELETE r

```

 

这将删除所有匹配条件为“name为John”的节点与匹配条件为“name为Mary”的节点之间的“likes”关系。

 

当然,以下是一些其他的Neo4j Cypher查询技巧和用法:

 

4. 过滤查询结果

 

使用WHERE命令过滤查询结果。例如,要查找所有年龄大于等于30岁的人节点,可以使用以下命令:

 

```

MATCH (p:Person)

WHERE p.age >= 30

RETURN p

```

 

这将返回所有匹配条件为“age大于等于30”的“Person”节点。

 

5. 聚合查询结果

 

1. COUNT:计算匹配的节点或关系的数量。

 

假设我们想要计算在2023年6月9日访问健身房的人数。以下查询将返回匹配的节点数量:

 

```

MATCH (p:Person)

WHERE p.visitDate = '2023-06-09'

RETURN COUNT(p) AS visitCount

```

 

2. SUM:计算匹配的数字属性的总和。

 

假设我们想要计算在2023年6月9日访问健身房的人员总访问时间。以下查询将返回匹配的节点的entryTime和leaveTime属性之和:

 

```

MATCH (p:Person)

WHERE p.visitDate = '2023-06-09'

RETURN SUM(p.leaveTime - p.entryTime) AS totalVisitTime

```

 

3. AVG:计算匹配的数字属性的平均值。

 

假设我们想要计算在2023年6月访问健身房的人员平均访问时间。以下查询将返回匹配的节点的entryTime和leaveTime属性的平均值:

 

```

MATCH (p:Person)

WHERE p.visitDate >= '2023-06-01' AND p.visitDate <= '2023-06-30'

RETURN AVG(p.leaveTime - p.entryTime) AS avgVisitTime

```

 

4. MIN:查找匹配的数字属性的最小值。

 

假设我们想要查找在2023年6月访问健身房的人员中最早进入健身房的人员。以下查询将返回匹配的节点中entryTime属性的最小值:

 

```

MATCH (p:Person)

WHERE p.visitDate >= '2023-06-01' AND p.visitDate <= '2023-06-30'

RETURN MIN(p.entryTime) AS earliestEntryTime

```

 

5. MAX:查找匹配的数字属性的最大值。

 

假设我们想要查找在2023年6月访问健身房的人员中最晚离开健身房的人员。以下查询将返回匹配的节点中leaveTime属性的最大值:

 

```

MATCH (p:Person)

WHERE p.visitDate >= '2023-06-01' AND p.visitDate <= '2023-06-30'

RETURN MAX(p.leaveTime) AS latestLeaveTime

```

 

6. 处理重复节点和关系

 

使用DISTINCT命令去除查询结果中的重复节点和关系。例如,要查找所有与“John”节点通过“likes”关系连接的不同“Person”节点,可以使用以下命令:

 

```

MATCH (p1:Person {name: 'John'})-[:likes]->(p2:Person)

RETURN DISTINCT p2

```

 

这将返回所有匹配条件为“与‘John’节点通过‘likes’关系连接的‘Person’节点”,并且去除其中的重复节点。

 

7. 使用限制和排序

 

使用LIMIT和ORDER BY命令限制和排序查询结果。例如,要查找所有“Person”节点,并按照年龄从小到大排序,返回前5个结果,可以使用以下命令:

 

```

MATCH (p:Person)

RETURN p

ORDER BY p.age ASC

LIMIT 5

```

 

这将返回所有“Person”节点,并按照“age”属性从小到大排序,返回前5个结果。

 

当涉及到数据建模时,有时候我们需要在图形数据库中创建虚拟节点和关系。虚拟节点和关系是不存储在数据库中的,但它们可以在查询中使用。以下是一些关于虚拟节点和关系的常见用法:

 

1. 创建虚拟节点

 

在Cypher查询中,您可以使用WITH子句创建虚拟节点。例如,以下查询将创建一个虚拟节点,该节点包含一个“name”属性和一个“age”属性:

 

```

WITH {name: 'John', age: 30} AS person

RETURN person

```

 

这将返回一个包含“name”和“age”属性的虚拟节点。

 

2. 创建虚拟关系

 

在Cypher查询中,您可以使用MERGE命令创建虚拟关系。例如,以下查询将创建一个虚拟关系,该关系连接了两个虚拟节点:

 

```

WITH {name: 'John', age: 30} AS person1, {name: 'Jane', age: 25} AS person2

MERGE (person1)-[:FRIENDS_WITH]->(person2)

RETURN person1, person2

```

 

这将返回两个包含“name”和“age”属性的虚拟节点,并创建一个虚拟关系,该关系连接这两个节点。

 

3. 使用虚拟节点和关系进行查询

 

在Cypher查询中,您可以使用虚拟节点和关系进行查询。例如,以下查询将返回所有匹配条件为“与虚拟节点‘John’通过‘FRIENDS_WITH’虚拟关系连接的节点”:

 

```

WITH {name: 'John', age: 30} AS person

MATCH (person)-[:FRIENDS_WITH]->(p:Person)

RETURN p

```

 

这将返回所有与虚拟节点“John”通过虚拟关系“FRIENDS_WITH”连接的“Person”节点。文章来源地址https://www.toymoban.com/news/detail-713006.html

到了这里,关于neo4j cypher查询的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • neo4j查询语言Cypher详解(一)--语法和子句

    neo4j 的图查询语言叫 Cypher 。Cypher的独特之处在于它提供了一种匹配模式和关系的可视化方式。 (nodes)-[:ARE_CONNECTED_TO]-(otherNodes) 使用圆角括号表示节点(nodes), -[:ARROWS]- 表示关系。 Cypher解析器接受任意输入字符串。 unicode 通常可以使用转义 uxxx 。 支持的空白符 描述 Unicode 字

    2024年02月14日
    浏览(55)
  • neo4j查询语言Cypher详解(二)--Pattern和类型

    图形模式匹配是Cypher的核心。它是一种用于通过应用声明性模式从图中导航、描述和提取数据的机制。在MATCH子句中,可以使用图模式定义要搜索的数据和要返回的数据。图模式匹配也可以在不使用MATCH子句的情况下在EXISTS、COUNT和COLLECT子查询中使用。 图模式使用类似于在白

    2024年02月14日
    浏览(39)
  • 图数据库_Neo4j学习cypher语言_使用CQL_构建明星关系图谱_导入明星数据_导入明星关系数据_创建明星关系---Neo4j图数据库工作笔记0009

    首先找到明星数据   可以看到有一个sheet1,是,记录了所有的关系的数据   然后比如我们搜索一个撒贝宁,可以看到撒贝宁的数据   然后这个是构建的CQL语句   首先我们先去启动服务 neo4j console     然后我们再来看一下以前导入的,可以看到导入很简单, 就是上面有CQL 看一下节

    2024年02月12日
    浏览(45)
  • neo4j批量追加属性、节点、关系

    前提:这个方法是用python连接neo4j再循环执行cql语句来实现的,适合1w条记录以内的数据,太大了就比较慢,平均1s执行30条语句左右。 主要的不同就在于cql语句的使用 连接数据库: 读取节点表和关系表,该文件是存储好的csv文件 中文是替代的文件名字,不是源文件名 替换

    2024年02月16日
    浏览(49)
  • Neo4j入门:手动构建节点关系

    目录 一、基本cypher语句建立节点和关系 建立节点 带属性的节点 一次建立多个节点 建立两个节点之间的关系 二、用CSV文件导入方法对Neo4j Desktop批量创建节点和关系 批量创建节点 创建一个编码为utf-8格式的CSV文件 将CSV文件放入到我们neo4j目录下面的import目录下 回到Neo4j执行

    2024年01月16日
    浏览(53)
  • 图数据库_Neo4j学习cypher语言_使用CQL命令002_删除节点_删除属性_结果排序Order By---Neo4j图数据库工作笔记0006

    然后我们再来看如何删除节点   可以看到首先   我们这里   比如我要删除张三 可以看到 match (n:student) where n.name = \\\"张三\\\" delete n 这样就是删除了student集合中,name是张三的节点   然后我们再来看 如何来删除关系 match (n:student)-[r]-(m:student) where n.name=\\\"小

    2024年02月12日
    浏览(51)
  • 知识图谱实战应用23-【知识图谱的高级用法】Neo4j图算法的Cypher查询语句实例

    大家好,我是微学AI,今天给大家介绍一下知识图谱实战应用23-【知识图谱的高级用法】Neo4j图算法的Cypher查询语句实例,Neo4j图算法是一套在Neo4j图数据库上运行的算法集合。这些算法专门针对图数据结构进行设计,用于分析、查询和处理图数据。图算法可以帮助我们发现图

    2024年02月14日
    浏览(45)
  • 删除neo4j所有内容,节点关系以及属性标签

    1.停止neo4j服务器 2.进入安装neo4j的目录删除两个文件夹 neo4j——data——databases 删除neo4j文件夹 neo4j——data——transactions 删除neo4j文件夹 即下图所示的两个文件夹 再打开neo4j会发现已经清空了所有数据

    2024年02月11日
    浏览(43)
  • NEO4J节点及节点间关系显示不完整的解决方法

    1.问题说明 在使用NEO4J数据库进行知识图谱的可视化时,在节点个数过多时(一般超过25个)会出现节点和节点关系显示不全的情况。 如下图所示,项目中共包含74个节点190条关系,但实际显示的仅有25个节点间的61条关系,超过25个之外的节点及其关系并未展示。 2.解决方案

    2024年02月13日
    浏览(64)
  • neo4j电影库-关系查询

    关系类型 数量 源数据 目标数据 属性 ACTED_IN 172 演员 电影 roles(角色扮演)属性,属性值为数组 DIRECTED 44 导演 电影 无 PRODUCED 15 制片商 电影 无 WROTE 10 作家 电影 无 FOLLOWS 3 影评人 影评人 无 REVIEWED 9 影评人 电影 summary(影评摘要)和 rating(评分)属性 【先按照书本整理下,

    2024年02月14日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包