繁体   English   中英

获取从一个 StartNode 传出的具有属性的所有节点和关系

[英]Get all Nodes and Relationships with Propperties outgoing from one 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# 项目中得到了奇怪的结果......

我会很高兴有任何帮助。 如果 go 更适合这种方法,我也对另一种编程语言持开放态度。 很高兴听到任何建议

我找到了一个 APOC function,它目前正在做我想做的事。 在搜索到的节点之后获取所有节点,并返回具有关系的完整子组。 目前看起来不错。 有什么建议如何将这些数据存储回 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 的关系

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM