我有一个看起来像这样的图表
(user)->[:Comments]->(comment)->[:Comments]->(comment)->[:Comments]->(comment)->(user)
基本上,它是用户发表的评论的循环链接列表。该列表环绕并最终回到用户处。如何使用 cypher 检索所有评论?
对此进行了尝试,对我来说它看起来有点令人费解,但无论如何它就是这样。
假设从最后一条评论到用户的关系是:评论
即代替..->(comment)->(user)
我以为..->(comment)-[:Comments]->(user)
START n=node(1)
MATCH n-[:Comments*0..]->(c)
WHERE c<>n
WITH collect(c) AS allComments,n
WITH last(allComments) AS lastcomment,n,allComments
WHERE lastcomment-[:Comments]->n
RETURN allComments
我不得不输入 WHERE c<>n,因为最后一个评论->用户关系是评论。如果它是别的东西,那就更好了,不需要这个(它在那里只是选择链中的最后一个评论)。它还返回一个集合。
http://console.neo4j.org/r/17d1fy
打赌@Wes Freeman 有一个更好的解决方案