Neo4j - 如何按 属性 分组和计数?

Neo4j - how to group and count by property?

我的图表中有两种节点类型。 节点 1 {id, 名称, node2id} 节点 2 {id,名称}

此时没有关系,但我只需要在 a:Node1 和 b:Node2 之间创建节点 2 小于 100 的地方。

因此,在 SQL 中,获取节点的查询类似于:

select Node1.Id, count(Node2.Id) as connections        
from Node1 left join Node2
    on (Node1.node2id = Node2.Id)
group by Node1.Id
having count(Node2.Id) < 100

我如何在 Neo4J 中执行此操作? 理想情况下,我想在这些节点之间添加关系,比如

CREATE (n:Node1)-[:HAS_CONNECTION]->(k:Node2)

您可以使用类似的东西:

MATCH (n1:Node1), (n2:Node2)
WHERE n1.node2id = n2Id
WITH n1, collect(n2) as nodes, count(*) AS count
WHERE count < 100
UNWIND nodes AS n
CREATE (n1)-[:HAS_CONNECTION]->(n)

您使用WITH语句收集所有与node1具有相同id的node2,统计它们,然后对其应用过滤器。