首页 > 解决方案 > 具有不同标签和关系的不同节点的 Neo4j 子图(如果有)

问题描述

我最近开始使用 neo4j 及其查询语言“cypher”来处理建筑/计量数据。

我当前的图形数据库由不同的节点组成(具有不同的标签,例如:point、meter、elec、equip ..etc. 仅举几例),并且每个节点都有不同的属性(在此上下文中不相关)。

我想做的是获得具有不同标签的不同节点的子图。例如,我想将所有节点标记为“点”以及标记为“装备”的节点和标记为“米”的节点。为此,我尝试了以下查询:

MATCH (p:point)
MATCH (e:equip)
MATCH (m:meter)
RETURN p, e, m

但是,这不起作用,因为:此查询在断开连接的模式之间构建笛卡尔积。

我正在尝试获取这些,以便如果标记为“point”的节点连接到“equip”或“meter”节点,我会得到关系。如果没有任何东西连接到“点”节点,那么它将是独立的。因此,我可以有一个带有“点”到“仪表”/“装备”连接的子图,并在视觉上识别孤立的“点”。

我也尝试过类似的东西:

MATCH (p:point)--(e:equip)
RETURN p,e

但这只会返回与“装备”节点有些连接的“点”节点。也没有给我标记为“点”的孤立节点。

期待您对此的意见(我猜是简单的情况)。

最好的!

标签: neo4jcypher

解决方案


以下查询将返回每个point节点及其所有相关节点的列表,以及其所有相关equip节点的另一个列表meter

MATCH (p:point)
RETURN p, [(p)--(e:equip) | e] AS es, [(p)--(m:meter) | m] AS ms

推荐阅读