如何解决如何返回neo4j中所有子图的子节点计数?
我有几个节点以不同的关系相互连接,我需要显示所有子图的子节点数。
MATCH p = (:entity {resource_key: '%s'}) RETURN p
UNION ALL MATCH p = (:entity {resource_key: '%s'})-[q]-(v:client) RETURN p
UNION ALL MATCH p = (:entity {resource_key: '%s'})-[q]-(user) RETURN p
UNION ALL MATCH p = (:entity {resource_key: '%s'})-[q]-(v:client)-[s]-(b:roles)-[w]-(e:domain) RETURN p
上面是我用于在visjs上显示图形的查询,现在我试图显示所有子图的子节点计数,我尝试同时使用count和size运算符,但它抛出了错误或仅显示1个关系计数。任何帮助将不胜感激。
注意:子图将跨越8个级别,并且针对不同用例具有不同的关系,因此,如果有通用的答案,那将非常有帮助。
解决方法
编辑:由于修改过的问题
首先,我建议打破一个查询,让子计数按需工作,然后处理大型复杂查询(如果需要复杂的话)
在size()括号内,我们需要一个有效的关系,这意味着n必须是一个节点,例如,尝试
MATCH p = (n:entity {resource_key: '%s'})-[q]-(v:client)
return size((n)-->())
要计算路径中的节点数,请使用nodes(),例如
所有路径p中的节点总数(可以重复)
MATCH p = (:entity {resource_key: '%s'})-[q]-(v:client)
with nodes(p) as n
return count(n)
所有路径p中唯一节点的总数
MATCH p = (:entity {resource_key: '%s'})-[q]-(v:client)
with nodes(p) as n
return count(distinct n)
您的问题标题实际上提到了关系,一个人可以用Relationships()做类似的事情
MATCH p = (:entity {resource_key: '%s'})-[q]-(v:client)
with relationships(p) as r
return count(r)
注意:看来在3.5中也同时出现了这两个node()和Relationships()。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。