给定一个具有多种出站边类型的节点,比如说 types ["A","B","C"]
,我将如何使用 cypher 查询 neo4j 数据库以返回每个边的计数。
例如,如果我有一个像这样的图表
(n0:NODE) -[:A]- (n1:NODE)
(n0:NODE) -[:A]- (n2:NODE)
(n0:NODE) -[:B]- (n3:NODE)
(n1:NODE) -[:B]- (n2:NODE)
(n4:NODE) // No edges
假设这些边都是双向的,我希望查询返回
Node, count(A), count(B), count(C)
n0, 2, 1, 0
n1, 1, 1, 0
n2, 1, 1, 0
n3, 0, 1, 0
n4, 0, 0, 0
对于所有带有标签的节点NODE
。
我现在正在使用它,这没问题,但它将所有不同的边缘类型放在不同的行上,因此我必须在后处理中迭代所有这些边缘类型以构建我想要的表:
MATCH (n:NODE) -[r]- ()
WHERE
type(r) in ["A", "B", "C"]
RETURN
id(n) as nid,
type(r) as rtype,
count(r) as cnt
有没有办法像我的示例一样将这些全部排成一行?
有几种方法可以走。由于您希望拥有所有类型的数据,即使它是
0
,一种选择是:对于样本数据:
返回:
*请注意,您在问题中的方法不会返回“n4”,因为它没有关系,并且您的查询仅匹配具有关系的节点。