如何解决如何选择传入关系数量最多的节点?
我有一个包含3种类型的节点的数据库:
文章(蓝色)
实体(粉红色)
和解决方案(绿色)。
它们与 APPEARS_IN 或 PART_OF 关系相关联。
我正在尝试选择具有最高数量的传入关系(“与Unity Pro enFrançais链接”)的解决方案节点,我尝试使用阈值(> 2)进行此查询但这并不是我想要做的,因为在这里我知道传入关系的最大数量是3,但是对于其他示例,它可能会有所不同:
MATCH (q:Question {title:"Comment avoir l'aide en ligne en français sur Unity Pro?"})<-[:APPEARS_IN]-(e:Entity)
MATCH (e:Entity)-[r:PART_OF]->(s:Solution)
WITH collect(e) AS entities,s,count(r) AS num WHERE num > 2
RETURN s
如何找到具有最高传入关系数量的“解决方案”节点(绿色)?
解决方法
您可以这样重写查询:
MATCH (e:Entity)-[r:PART_OF]->(s:Solution)
WITH e,s,size((s)<--()) AS incomingCount
ORDER BY incomingCountDesc
RETURN s
LIMIT 1
,
要有效地获得具有最多传入关系的Solution
节点:
MATCH (s:Solution)
RETURN s,SIZE((s)<--()) AS cnt
ORDER BY cnt DESC
LIMIT 1
SIZE((s)<--())
语法使Cypher计划程序生成非常有效的GetDegree操作,不需要任何数据库命中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。