Neo4j:计算每个节点具有特定标签的邻居的数量

Neo4j:计算每个节点具有特定标签的邻居的数量,neo4j,cypher,Neo4j,Cypher,作为一种验证测试,我想为每个具有labelA的节点计算具有给定labelB的相邻节点的数量,然后为每个节点返回任何labelA,因为相邻节点的数量不等于2 基本上,parent:parent\u name应该始终具有两个连接的节点,并且具有标签child\u name。如何返回此语句为False的节点 目前,我正在做一个非常耗时的“在neo4j中匹配所有内容”,然后在python中进行groupby和count 密码: MATCH (parent: parent_name) MATCH (pa

作为一种验证测试,我想为每个具有labelA的节点计算具有给定labelB的相邻节点的数量,然后为每个节点返回任何labelA,因为相邻节点的数量不等于2

基本上,
parent:parent\u name
应该始终具有两个连接的节点,并且具有标签
child\u name
。如何返回此语句为False的节点

目前,我正在做一个非常耗时的“在neo4j中匹配所有内容”,然后在python中进行groupby和count

密码:

MATCH (parent: parent_name) 
MATCH (parent)-->(child: child_name)
RETURN parent.id, child.id, 'child_name' as child_label, 'parent_name' as parent_label
后处理:

grouped = df.groupby(['child_label', 'child.id']).apply(len)
result = grouped[grouped != 2].index  # returns pairs of child_label and child.id
我不能大规模地这样做。寻找邻居是图的主要用例之一!一定有办法做到这一点


可能对每个父项名称使用
UNDWIND
?如果我在
展开
下使用
count
,它只是计算总数,而不是该节点的数量…

一般方法可以沿着这些线,找到任何带有标签
:LabelA
的节点,该节点与标签
LabelB
没有精确的两个邻居(无论关系的方向如何)

MATCH (n:LabelA)
WITH n,
     SIZE([(n)--(m:LabelB) | m ])  AS nodeCountLabelB
WHERE nodeCountLabelB <> 2
RETURN n
   
匹配(n:LabelA)
有了n,
尺寸([(n)-(m:LabelB)| m])作为nodeCountLabelB
哪里有nodeCountLabelB 2
返回n

一般的方法是沿着这些路线,找到任何带有label
的节点:LabelA
,该节点与label
LabelB不完全有两个邻居(无论关系的方向如何)

MATCH (n:LabelA)
WITH n,
     SIZE([(n)--(m:LabelB) | m ])  AS nodeCountLabelB
WHERE nodeCountLabelB <> 2
RETURN n
   
匹配(n:LabelA)
有了n,
尺寸([(n)-(m:LabelB)| m])作为nodeCountLabelB
哪里有nodeCountLabelB 2
返回n

这里有一种方法可以获取每个子节点数目错误的父节点的id,以及其现有子id的列表(可能为空):

MATCH (parent:parent_name)
WITH parent.id AS parentId, [(parent)-->(child:child_name) | child.id] AS childIds
WHERE SIZE(childIds) <> 2
RETURN parentId, childIds
匹配(父项:父项名称)
使用parent.id作为parentId,[(parent)-->(child:child_name)| child.id]作为childid
其中大小(childId)为2
返回parentId,childId

这里有一种方法可以获取每个子节点数目错误的父节点的id,以及其现有子id的列表(可能为空):

MATCH (parent:parent_name)
WITH parent.id AS parentId, [(parent)-->(child:child_name) | child.id] AS childIds
WHERE SIZE(childIds) <> 2
RETURN parentId, childIds
匹配(父项:父项名称)
使用parent.id作为parentId,[(parent)-->(child:child_name)| child.id]作为childid
其中大小(childId)为2
返回parentId,childId