图遍历详解

news2024/11/28 20:02:14
  • 图遍历
    • 在 Neo4j 中,关系的唯一性始终得到遵守。即两个节点之间永远不会有两个相同类型和方向的关系。这使 Neo4j 能够避免图形遍历中的循环或无限循环。
    • 使用多个 Match 子句和多个模式的查询
    • 性能分析 PROFILE
      • 加入PROFILE的查询语句将占用更多的资源,所以除非真正在做性能分析,否则不要使用PROFILE。
    • 分析路径常用函数
      • 返回路径的长度。
        • length(p)
          • MATCH p = ((person:Person)-[]->(movie)) WHERE person.name = 'Walt Disney' RETURN p

      • 返回包含路径节点的列表。
        • nodes(p)
      • 返回包含路径关系的列表。
        • relationships(p)
    • 路径
      • 寻找两个节点之间的最短路径。
        • 最短路径(无限制关系类型)
          • MATCH p = shortestPath((p1:Person)-[*]-(p2:Person)) WHERE p1.name = "Eminem" AND p2.name = "Charlton Heston" RETURN p

        • 限制特定的关系类型
          • MATCH p = shortestPath((p1:Person)-[:ACTED_IN*]-(p2:Person)) WHERE p1.name = "Eminem" AND p2.name = "Charlton Heston" RETURN p

        • 对于shortestPath()和allShortestPaths(),可以提供路径长度的上限,但不能提供下限。
        • 使用 ACTED_IN 关系检索与 Eminem 恰好两跳距离的所有 Person 节点。
          • MATCH (p:Person {name: 'Eminem'})-[:ACTED_IN*2]-(others:Person) RETURN others.name
        • 使用 ACTED_IN 关系检索与 Eminem 恰好四跳距离的所有 Person 节点。
          • MATCH (p:Person {name: 'Eminem'})-[:ACTED_IN*4]-(others:Person) RETURN others.name
        • 使用 ACTED_IN 关系检索距离 Eminem 最多四跳的所有 Person 节点。
          • MATCH (p:Person {name: 'Eminem'})-[:ACTED_IN*1..4]-(others:Person) RETURN others.name
      • 找出图中节点彼此“接近”的程度。
    • 参数
      • 查询的范围变量(类似于Oracle中的定义变量)
      • 使用 WITH 子句定义和初始化要在查询中使用的变量。
        • WITH 'Tom Hanks' AS actorName MATCH (p:Person)-[:ACTED_IN]->(m:Movie) WHERE p.name = actorName RETURN m.title AS movies
        • 使用WITH子句作用域变量
          • WITH 'toy story' AS mt, 'Tom Hanks' AS actorName MATCH (p:Person)-[:ACTED_IN]->(m:Movie) WITH m, toLower(m.title) AS movieTitle WHERE p.name = actorName AND movieTitle CONTAINS mt RETURN m.title AS movies, movieTitle
          • 如果您要删除第二WITH个子句中的 m,查询将无法编译。(返回节点的属性则在 WITH 中要定义节点)
          • 限制结果
            • Return 后加 Limit
              • WITH 'Tom Hanks' AS theActor MATCH (p:Person)-[:ACTED_IN]->(m:Movie) WHERE p.name = theActor RETURN m.title AS movies LIMIT 2
            • WHERE 后使用 WITH 子句
              • WITH 'Tom Hanks' AS theActor MATCH (p:Person)-[:ACTED_IN]->(m:Movie) WHERE p.name = theActor WITH m ORDER BY m.year LIMIT 2 RETURN m.title AS movies
        • WITH子句中嵌套子句
          • MATCH (n:Movie) WHERE n.imdbRating IS NOT NULL AND n.poster IS NOT NULL WITH n { .title, .year, .languages, .plot, .poster, .imdbRating, directors: [ (n)<-[:DIRECTED]-(d) | d { tmdbId:d.imdbId, .name } ]} ORDER BY n.imdbRating DESC LIMIT 4 RETURN collect(n)
        • WITH 后已经聚合属性值,RETURN再使用别名用反引号
          • MATCH (p:Person)-[:ACTED_IN]->(m:Movie)<-[r:RATED]-(:User) WHERE p.name = 'Tom Hanks' WITH m, avg(r.rating) AS avgRating RETURN m.title AS Movie, avg Rating AS `AverageRating` ORDER BY avgRating DESC
      • 使用 UNWIND 子句定义使用的变量
        • 为列表的每一列返回一行(列转行)
          • MATCH (m:Movie)-[:ACTED_IN]-(a:Actor) WHERE a.name = 'Tom Hanks' UNWIND m.languages AS lang RETURN m.title AS movie,m.languages AS languages,lang AS language
          • MATCH (m:Movie) UNWIND m.countries AS country WITH m, trim(country) AS trimmedCountry WITH trimmedCountry, collect(m.title) AS movies RETURN trimmedCountry, size(movies)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/365475.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

华为OD机试真题 用 C++ 实现 - 任务总执行时长

最近更新的博客 华为OD机试 - 入栈出栈(C++) | 附带编码思路 【2023】 华为OD机试 - 箱子之形摆放(C++) | 附带编码思路 【2023】 华为OD机试 - 简易内存池 2(C++) | 附带编码思路 【2023】 华为OD机试 - 第 N 个排列(C++) | 附带编码思路 【2023】 华为OD机试 - 考古…

部署跨云容灾的五大难点

为什么企业需要跨云容灾&#xff1f; 据统计&#xff0c;全球已有70%的企业使用云计算服务。上云帮助企业更高效地管理数据资产&#xff0c;但它并非绝对安全。如停电、漏水等机房事故&#xff1b;地震、火灾等自然性灾害&#xff1b;亦或是人为失误&#xff0c;都有可能造成数…

使用WordPress快速搭建外贸网站教程

一、下载安装 1、首先前往官方下载wordPress框架&#xff0c;下载地址&#xff1a;Download | WordPress.org 2、把下载好的安装包上传到我们的服务器&#xff0c;解压 3、我使用的搭建环境是宝塔Linux CentOS 7.9&#xff08;Apache2.4mysql5.6php7.4&#xff09;&#xf…

肖臻公开课(三)——比特币中的数据结构

本笔记对应北京大学肖臻老师《区块链技术与应用》公开课第三课。 0.前言 在本节中&#xff0c;肖老师先是简单介绍了哈希指针的概念&#xff0c;然后着重介绍了比特币中的两个重要的数据结构&#xff1a;block chain和merkle tree。 1.哈希指针 谈到比特币中的数据结构&#…

AD360身份管理自动化

自动化 IAM 的需求 对于组织来说&#xff0c;通过部署用户友好的 IAM 自动化解决方案来保持其安全性非常重要&#xff0c;该解决方案将消除人为错误并确保合规性&#xff0c;同时降低成本和管理工作负载。 AD360 是一种自动化身份管理解决方案&#xff0c;提供管理用户身份、…

这7条数据分析思路与技巧,让分析结果更可靠、完整!

大家好。在和一些新人数据分析师聊天时&#xff0c;经常听到大家说“工作时没有自己的分析思路&#xff0c;常常是机械地完成老板布置的任务&#xff0c;无法形成自己的数据分析方法论。” 的确&#xff0c;作为一名数据分析师我也能理解初入行的同学的烦恼&#xff0c;我们在…

ChatGPT,会是现实世界的MOSS吗?

最近&#xff0c;两个人工智能系统彻底火出了圈&#xff0c;成为许多网友热议的焦点。 一个是冷酷无情的“幕后主角”MOSS&#xff0c;一个是多才多艺的“全能网友”ChatGPT。 先来说说MOSS。今年春节档&#xff0c;科幻电影《流浪地球2》热映&#xff0c;电影中一个面试环节令…

深入浅出C++ ——手撕红黑树

文章目录一、红黑树的概念二、红黑树的性质三、红黑树节点的定义四、红黑树的插入操作五、红黑树的验证五、红黑树的删除六、红黑树与AVL树的比较七、红黑树的应用八、红黑树模拟实现一、红黑树的概念 红黑树&#xff0c;是一种二叉搜索树&#xff0c;但在每个结点上增加一个存…

测试中的四大板块

单元测试 单元测试的对象是软件设计的最小单位——模块。单元测试的依据是详细设描述&#xff0c;单元测试应对模块内所有重要的控制路径设计测试用例&#xff0c;以便发现模块内部的错误。单元测试多采用白盒测试技术&#xff0c;系统内多个模块可以并行地进行测试。 单元测试…

【Linux】进程状态与进程优先级

目录一.进程状态1.阻塞&#xff1a;2.挂起&#xff1a;具体情况3.具体操作系统状态变化R&#xff1a;运行状态(running)S&#xff1a;休眠状态(sleeping)D&#xff1a;磁盘休眠状态(Disk sleep)T&#xff1a;暂停状态(stopped)暂停进程继续进程t&#xff1a;追踪暂停状态(traci…

ArcGIS导出AI或EPS格式的地图图片并在Adobe Illustrator中继续编辑

本文介绍在ArcGIS下属的ArcMap软件中&#xff0c;将绘制好的地图导出为.ai或者.eps格式文件&#xff0c;并在Adobe Illustrator软件中进一步编辑地图&#xff0c;并最终导出为图片格式的结果文件的方法。 在ArcMap软件中绘制各类地图可以说非常方便&#xff0c;绘制得到的地图也…

论文阅读 | GroupViT: Semantic Segmentation Emerges from Text Supervision

前言&#xff1a;CLIP工作拓展-利用文本-图像对的信息进行图像语义分割&#xff08;CVPR2022&#xff09; 论文&#xff1a;【here】 代码&#xff1a;【here】 GroupViT: Semantic Segmentation Emerges from Text Supervision 引言 传统分割方法采用自底而上的架构&#x…

前置知识-辛几何与辛代数的基本概念、欧式几何与辛几何、相空间

1.3 Hamilton 系统的辛几何算法 经典力学有三种等价的 “数学形式” 体系: Newton 体系、Lagrange 体系和 Hamilton 体系, 其中 Hamilton 体系具有对称的形式且能应用于较广泛的物理现象, 故它一直是物理学理论研究的数学工具. Hamilton 体系的一个重要特性是稳定性, 它在几何上…

MySQL高级-day01

MySQL-day01 1 逻辑架构 1.1 架构概览 和其它数据库相比&#xff0c;MySQL有点与众不同&#xff0c;它的架构可以在多种不同场景中应用并发挥良好作用。主要体现在存储引擎的架构上&#xff0c;插件式的存储引擎架构将查询处理和其它的系统任务以及数据的存储提取相分离。 …

Mysql插入数据从指定选项中随机选择、插入时间从指定范围随机生成、Navicat使用存储过程模拟插入测试数据

场景 Navicat通过存储过程批量插入mysql数据&#xff1a; Navicat通过存储过程批量插入mysql数据_霸道流氓气质的博客-CSDN博客 上面使用过Navicat借助存储过程批量插入数据。但是插入数据是固定的 insert语句&#xff0c;如果在本地开发时需要模拟插入一些随机数据(从指定…

考出PMP证书到底有没有用?

我们将从三方面分享&#xff1a; 1. PMP 证书在国内的含金量怎么样&#xff1f; 2. HR 如何看待 PMP 证书&#xff1f; 3. 拿到 PMP 证书后&#xff0c;有哪些变化&#xff1f; 一&#xff0c;PMP证书的含金量 说到 PMP 证书的含金量&#xff0c;相信这个问题是所有学员都…

SVHN数据集下载及使用方法

街景门牌号数据集&#xff08;SVHN&#xff09;&#xff0c;这是一个现实世界数据集&#xff0c;用于开发目标检测算法。它需要最少的数据预处理过程。它与 MNIST 数据集有些类似&#xff0c;但是有着更多的标注数据&#xff08;超过 600,000 张图像&#xff09;。这些数据是从…

【笑小枫-面试篇】Java基础面试题整理,努力做全网最全

写在前面 或许你只是想白嫖内容&#xff0c;或许你也会忽略这段文字&#xff0c;但我还是想弱弱的说 题目整理耗费了大量精力&#xff0c;希望可以给博主点赞收藏&#xff0c;谢谢大家啦 我呢&#xff0c;笑小枫&#xff0c;一个努力的普通人&#xff0c;也希望可以花1秒钟记住…

VS Code安装及(C/C++)环境配置(Windows系统)

参考资料2份&#xff1a; 从零开始的vscode安装及环境配置教程(C/C)(Windows系统)_光中影zone的博客-CSDN博客_vscode运行配置https://blog.csdn.net/qq_45807140/article/details/112862592 VSCode配置C/C环境 - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/87864677 五…

C语言与Linux系统文件操作函数大全

目录 一、C语言——fopen函数 二、C语言——fwrite函数 三、C语言——fread函数 四、C语言——fseek函数 1、Linux系统——open接口 2、Linux系统——write接口 3、Linux系统——read接口 4、Linux系统——lseek接口 一、C语言——fopen函数 fopen函数是C标准库提供的打…