c# - 获取从一个 StartNode 传出的具有属性的所有节点和关系
问题描述
我是 GraphDatabase 领域的新手,也是编写 Cypher 语句的新手。
我有一个项目,我想将接线图信息存储在图形数据库(Neo4J)中。有不同类型的节点,例如 fe WiringDiagram [WD] 节点(在许多情况下将是我的起始节点),关于此 WD 节点,所有组件(如保险丝盒、ICU 或传感器)都通过关系链接。插头也可以包含引脚,引脚通过连接线连接。
第一个版本已经存储在 Neo4j 数据库中,请看下图。
现在我有一个问题,哪种方式最好对这些数据进行后处理。我想要为一个特定的接线图提取数据。因此,如果我说我想要 ID 为 123 的 WiringDiagram 的所有信息,我应该得到所有组件、引脚和连接线。Cypher 在这里应该是什么样子?我希望 C# 数据模型中的数据最好(如果可能的话)。因为之后我想尝试从数据中生成一个 SVG。
正如您在图像中看到的,cypher 语句当前看起来像这样。“MATCH (w:WiringDiagram)<-[r:partOf]-(n)-[*2..]-(l) RETURN * LIMIT 50” 但是有了这个语句,我在 C# 项目中得到了奇怪的结果......
我会很高兴有任何帮助。如果它更适合这种方法,我也愿意继续使用另一种编程语言。很高兴听到任何建议
解决方案
我找到了一个 APOC 功能,它目前可以做我想做的事情。在搜索到的节点之后获取所有节点,并返回具有关系的完整子组。目前看起来不错。有什么建议如何将这些数据存储回 C# 中的数据模型中?(什么是最好的方法?)
var result = tx.Run($@"MATCH (p:WiringDiagram {{wiringid:1}})
CALL apoc.path.subgraphAll(p, {{
relationshipFilter:
""partOf|has_pin|connectedWith"",
filterStartNode:false,
minLevel: 0,
maxLevel: 10
}})
YIELD nodes, relationships
RETURN nodes, relationships;");
之后我有两个列表,一个包含所有节点,一个包含所有与 start/endnode id 的关系
推荐阅读
- sql - 分区键的第一个键可以是集群键吗?
- c++ - 架构 x86_64 的未定义符号(我发现了错误,但我无法修复它。)
- python - 为什么我会收到这个 TypeError?TypeError: 'instancemethod' 类型的对象没有 len() [已解决]
- graphite - 单击仪表板链接时,石墨下降以在 WEB UI 中合并
- django - django中的值方法
- python - 在 docker 容器中找不到 python3 命令
- git - 告诉 git 不要传播本地更改
- python - 我怎样才能从最频繁和低于的顺序找到列表中最频繁的六个单词
- mongoose - 不允许在 Mongoose 和 Node JS 中添加相同级别的主题
- matlab - for 循环仅显示迭代的最后一个值