Neo4j - 获取某个值在该簇中的簇的不同计数

问题描述 投票:0回答:1

我正在尝试从值列表中获取包含特定值的簇的不同计数。

数据集:

CREATE 
(a1: node {tag: "a", cluster: 1}),
(a2: node {tag: "a", cluster: 1}),
(a3: node {tag: "a", cluster: 2}),
(a4: node {tag: "a", cluster: 3}),
(b1: node {tag: "b", cluster: 3}),
(b2: node {tag: "b", cluster: 4}),
(c1: node {tag: "c", cluster: 3}),
(a1)-[:IS_FRIEND_OF]->(a2),
(a4)-[:IS_FRIEND_OF]->(b1),
(a4)-[:IS_FRIEND_OF]->(c1)

我想为

tag
的每个不同值获取不同的簇计数。

  • a:3。
    • 有 4 个节点具有
      tag: a
      ,但它们位于 3 个不同的集群中,集群 1,2,3
  • b:2。
    • b 出现在 2 个不同的簇中,簇 3、4
  • c:1。
    • c 出现在 1 个不同的簇中,簇 3

我尝试通过下面的查询获取不同的标签值列表和簇列表,但我不确定应该如何继续加入/链接这两个列表以获得预期的不同计数。

MATCH (node)
WITH collect(distinct node.tag) AS tag_list, collect(node) AS clusters
RETURN tag_list, clusters

提前非常感谢!

neo4j cypher
1个回答
0
投票

这个简单的查询应该可以工作:

MATCH (n:node)
RETURN n.tag AS tag, COLLECT(n.cluster) AS clusters
© www.soinside.com 2019 - 2024. All rights reserved.