首页 > 解决方案 > 如何在neo4j中找到特定标签的单个节点与不同标签中的所有其他节点之间的不同节点的计数?

问题描述

我有 4 种不同类型的标签和每个标签中的多个节点。假设标签 P 的节点 A 连接到标签 Q 的多个节点,并且这些节点连接到标签 R 的多个节点。现在我正在尝试计算标签 R 中连接到节点 A 的不同节点的数量直接或通过标签 Q。

标签: neo4j

解决方案


这应该有效:

MATCH path = (a:P)-[*1..2]->(r:R)
WHERE a.id = 'A' AND (LENGTH(path) = 1 OR 'Q' IN LABELS(NODES(path)[1]))
RETURN DISTINCT r

这个简单的示例假定两个关系具有一致的“前向”关系方向性。

[附录]

这应该是比评论中询问的更好的查询:

MATCH path = allShortestPaths((a:P)-[*1..2]->(r:R))
WHERE a.id = $resource_key AND (LENGTH(path) = 1 OR 'Q' IN LABELS(NODES(path)[1]))
RETURN COUNT(DISTINCT r)

推荐阅读