我有一系列的评论和回复,每个评论可以有多个回复,每个回复又可以有任何数量的嵌套或即时回复。
以下是一些图表示例数据:
在这里,我有一个帖子,有4条评论,每条评论都回复了前面的评论,我想写一个查询,这样我就可以像这样将它们作为嵌套列表返回
Post = {
...
comments: [
comment: {
...
replies: [
comment: {
...
replies: [
comment : {
etc
]
}
]
}
]
}
每个评论都有一个回复列表,每个回复都有回复,你就明白了
我对使用cypher非常陌生,我更熟悉mongoDB,所以这是我目前为止的查询
MATCH tree1 = (post:POST)<-[:COMMENTED_ON]-(comment:COMMENT)
OPTIONAL MATCH tree2 = (comment)<-[replied_to:REPLIED_TO *]-(reply:COMMENT)
WHERE ID(post) = 5
RETURN nodes(tree1), nodes(tree2)
它得到所有的节点,但它只是节点的列表,有很多重复,我已经做了很多谷歌搜索,我看了FOREACH功能,但我不确定我如何正确地应用它在这里。我几乎可以肯定地写一个查询,然后我可以使用代码将其转换为我需要的结构,但如果我能写一个查询来为我做这件事,或者至少是一个以更容易做到的格式返回节点的查询,那就太好了
1条答案
按热度按时间ryhaxcpt1#
此查询使用APOC过程apoc.convert.toTree生成树:
阅读the docs,了解如何配置生成的树中包含或排除的属性。