【发布时间】:2023-03-20 21:03:01
【问题描述】:
我有一个看起来像这样的图表
(user)->[:Comments]->(comment)->[:Comments]->(comment)->[:Comments]->(comment)->(user)
基本上它是一个用户创建的 cmets 的循环链表。该列表环绕并最终回到用户处。如何使用 cypher 检索所有 cmets?
【问题讨论】:
我有一个看起来像这样的图表
(user)->[:Comments]->(comment)->[:Comments]->(comment)->[:Comments]->(comment)->(user)
基本上它是一个用户创建的 cmets 的循环链表。该列表环绕并最终回到用户处。如何使用 cypher 检索所有 cmets?
【问题讨论】:
对此进行了尝试,这对我来说似乎有点令人费解,但无论如何都是这样。
假设从最后一条评论到用户的关系是 :Comments
即代替..->(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 cn,因为最后一个评论->用户关系是评论。如果它是别的东西,那就更好了,不需要这个(它在那里只是选择链中的最后一个评论)。它还返回一个集合。
http://console.neo4j.org/r/17d1fy
打赌@Wes Freeman 有一个更好的解决方案
【讨论】: