Cypher查询中的层次结构

时间:2014-01-04 12:55:09

标签: neo4j cypher

我需要一些关于如何考虑以下问题的指示。

考虑一下这个Cypher问题:

MATCH (n:news)<-[r:COMMENT*1..]-(m)-[:POSTED]-(o:user) 
WHERE ID(n) = 54041
RETURN m,r,o

它给出了这个图表:

graph

这个结果又回来了:

data

正如您所看到的,newscomment与身体“嘿...... ”是身为“ Eyyy!”的节点的newscomment em>“这是newscommentnews节点。

到目前为止,这么好。但是,在网站上我想要显示新闻,下面我想以分层方式列出所有新闻评论,就像这个reddit example一样。

就像现在一样,没有办法判断新闻评论是对新闻或其他新闻评论的评论。

我应该在每个节点上将父节点id保存为parent属性吗?我可以以某种方式获得步骤[r:COMMENT*1..]的顺序,这样就可以找出将评论放在UI中的位置吗?

你会如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

我想也许你正在寻找一个简单的子查询来找到父母:

MATCH (n:news)<-[r:COMMENT*1..]-(m)-[:POSTED]-(o:user) 
WHERE ID(n) = 54041
WITH m,r,o
MATCH (m)-[:COMMENT]->(parent)
RETURN m, r, o, parent

这会有用吗?