Neo4j Cypher:如何从路径中解压节点以允许进一步匹配?

2023-11-23

这个问题是问题的后续问题here

我有一个带有循环链表的图。 (请参阅此处的示例) 链表中的每个节点都指向一个User。查询列表时,我必须使用路径语句,因为列表是循环的,并且我不想检索从 u:USER 节点开始的节点。为了获取感兴趣的节点,我的查询如下所示:

MATCH path=(nl:NODELINK { linkId:'cc' })-[:LINK*]->(u:USER)
RETURN nodes(path)

一旦我检索到路径,我想对该路径中的节点(NODELINK)进行进一步匹配,如下所示:

MATCH path=(nl:NODELINK { linkId:'cc' })-[:LINK*]->(u:USER)
WITH nodes(path) AS nodeLinks
MATCH nodeLinks-[:PERSONLINK]->persons
RETURN persons

但如果我尝试,我会收到错误:

Error: Type mismatch: nodeLinks already defined with conflicting type Collection<Node> (expected Node) (line 3, column 7)
"MATCH nodeLinks-[:PERSONLINK]->persons"

如何从路径中解压 NODELINK 类型的节点以便对它们进行进一步的 MATCH 查询?


试试这个......有点hacky,但在展开操作之前,它会起作用。

MATCH path=(nl:NODELINK { linkId:'cc' })-[:LINK*]->(u:USER)
WITH [x in nodes(path) | id(x)] AS nodeLinkIds
MATCH (n1:NODELINK)
WHERE id(n1) in nodeLinkIds // this does efficient id lookups for the nodes in the list
MATCH n1-[:PERSONLINK]->persons
RETURN persons
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Neo4j Cypher:如何从路径中解压节点以允许进一步匹配? 的相关文章

随机推荐

  • Flutter 中的水平步进器

    我想创建一个水平步进器 我知道这很容易 但是这一次 步数应该很大 举个例子 这就是我在垂直领域所做的事情 import package flutter material dart void main gt runApp new MyApp
  • 在 C++ 中如何实现多个 COM 接口?

    我试图理解这个示例代码关于浏览器帮助程序对象 在内部 作者实现了一个公开多个接口 IObjectWithSite IDispatch 的类 他的 QueryInterface 函数执行以下操作 if riid IID IUnknown pp
  • 如何验证 jar 内 MANIFEST.MF 的顺序?

    我遇到了一个有趣的问题 这对我来说绝对是新的 正如我突然发现的 Jar 规范说 被包含在内 META INF and MANIFEST MF必须是第一个和第二个条目 jar包而不仅仅是存档中的目录和文件 我正在使用 Java 框架 非常注意
  • 如何在 C++/CLI 中使用 boost::bind 绑定托管类的成员

    我在本机 C 类中使用 boost signal 现在我正在 C CLI 中编写 NET 包装器 以便可以将本机 C 回调公开为 NET 事件 当我尝试使用 boost bind 获取托管类的成员函数的地址时 出现编译器错误 3374 指出
  • Python CSV 到 SQLite

    我正在 转换 一个大的 1 6GB CSV 文件并将CSV 的特定字段插入到SQLite 数据库中 基本上我的代码如下所示 import csv sqlite3 conn sqlite3 connect path to file db co
  • 使用 Apache POI 将部分单元格内容设置为下划线?

    我正在开发一个程序 其中我必须在 Excel 电子表格中设置单元格值 例如 这是一下划线 text 它可以是任何粗体 斜体或下划线 我正在使用 Apache POI 3 9 请尝试以下操作 public static void differ
  • 使用 Apache Beam 进行窗口化 - 修复了窗口似乎没有关闭的问题?

    我们正在尝试在 Apache Beam 管道上使用固定窗口 使用DirectRunner 我们的流程如下 从发布 订阅中提取数据 将 JSON 反序列化为 Java 对象 带有 5 秒固定窗口的窗口事件 使用自定义CombineFn 合并每
  • 将单词列表中的所有单词替换为 python 中的另一个字符串

    我有一个用户输入了字符串 我想搜索它并用我的替换字符串替换单词列表中出现的任何内容 import re prohibitedWords MVGame Kappa DatSheffy DansGame BrainSlug SwiftRage
  • 如何将 && 操作数解析为逻辑标量

    当我在matlab中运行代码后 我遇到了这个错误 并且不确定如何解决它 我怎么解决这个问题 Warning 的操作数和 运算符必须可转换为逻辑标量值 Jgray double rgb2gray J Calculate the Gradien
  • 使用 XML 和 XSD 创建填充数据库

    我不确定这是否可行 但我想我会询问并看看是否可以获得任何信息 正如标题所示 我有一个包含数千行的 XML 文件 我还有其关联的 XSD 架构文件 我想知道 我是否可以在不手动指定 XPath 的情况下将这些数据转换为 MySQL 数据库 例
  • Android模拟器设置没有相机选项(用于虚拟场景)

    I want my android emulator to be in a virtual scene when I open the camera but it doesn t work It just shows a pixelated
  • 使用模型绑定从 MVC 4 中的 List 中选择项目

    给定一个类 public class Person Some general properties public List
  • 在 YAML 中重复节点值

    pagination limit default 10 min 0 max 50 current default The current节点的值应与default节点 在本例中为 10 可以用 YAML 做到这一点吗 您可以使用anchor
  • 与“make install”相反的是什么,即如何在 Linux 中卸载库?

    在跑步的时候 configure prefix mingw 在我之前运行的一个库的 MinGW MSYS 系统上 configure prefix mingw make make install 我看到了这条消息 警告 已安装 Vamp 插
  • 从内存加载向量的更好方法。 (铛)

    我正在编写一个测试程序 以适应 OpenCL 样式向量的 Clang 语言扩展 我可以让代码正常工作 但我在获取其某一方面时遇到了问题 我似乎无法弄清楚如何让 clang 很好地从标量数组加载向量 目前我必须做类似的事情 byte16 va
  • 使用InstallShield注册COM对象

    我正在使用InstallShield 2011 我有一个需要在安装过程中注册的COM对象 我似乎找不到任何地方可以指导您如何执行此操作 有人有什么想法吗 Thanks EDIT 创建一个组件并向其中添加 COM dll ocx 然后右键单击
  • 说明 C# 中 volatile 关键字的用法

    我想编写一个小程序来直观地说明volatile关键词 理想情况下 它应该是一个对非易失性静态字段执行并发访问的程序 并因此获得不正确的行为 在同一程序中添加 volatile 关键字应该可以解决该问题 这是我没能实现的 即使尝试多次 启用优
  • layout_constraintWidth_default="wrap" 已弃用,有其他选择吗?

    我在textview中使用这个layout constraintWidth default wrap 来保持textview内容包裹 在它的右侧有imageview 随着textview中的文本增加 textview区域将会增长 从而将im
  • 如何防止 Excel 自动复制表格中的公式?

    我使用的是 Excel 2016 我有一个带有标题的表格 当我插入公式时 Excel 会自动将该公式复制到列中的所有其他单元格 虽然这通常没问题 但它错误地计算了表标题 我以为我可以更改顶行以排除标题 但 Excel 更新了我不想要的列的其
  • Neo4j Cypher:如何从路径中解压节点以允许进一步匹配?

    这个问题是问题的后续问题here 我有一个带有循环链表的图 请参阅此处的示例 链表中的每个节点都指向一个User 查询列表时 我必须使用路径语句 因为列表是循环的 并且我不想检索从 u USER 节点开始的节点 为了获取感兴趣的节点 我的查