Cypher:为特定类型的每个节点获取 n 个相邻节点

时间:2021-07-30 09:23:01

标签: graph neo4j cypher

我使用的是 Neo4j 服务器 4.2.5。

我要运行查询的模式如下所示:

(Artist)-[similar_to {score: <float>}]->(Artist)

现在我想要做的是获得每个艺术家得分最高的 5 个 [similar_to] 关系。

我尝试使用 Neo4j 的 collect() 函数将所有艺术家收集到一个列表中,然后使用 UNWIND 对其进行迭代。遗憾的是,LIMIT 子句似乎限制了返回记录的总数,而不是每次迭代返回的记录数。

任何帮助将不胜感激。

提前致谢

1 个答案:

答案 0 :(得分:0)

要获得得分最高的 5 个 rels,应该这样做。

MATCH (n:Artist)-[r:similar_to]->(:Artist)
WITH n,r 
ORDER BY r.score DESC
RETURN n, COLLECT(r)[..5] AS relsWithHighestScores