如何使用Cypher返回属于Neo4j中指定帖子的评论



据我所知,在图形数据库中,如果你已经做了,你就不必再做一个相同的节点。所以我有一个类似的帖子:

U.username  P.post
rio         hello
rio         hello

正如我之前所说的,您不必创建另一个相同的节点,因此上面的两个帖子将存储在一个节点中。每个节点都可以有一些注释。例如,我用test评论第一篇文章hello:

U.username  P.post  C.comment
rio         hello   test
rio         hello

和我有密码查询语言像这样返回属于第一个帖子的评论:

MATCH (U:User)-[G:Give]->(C:Comment)<-[H:Has]-(P:Post)<-[S:Shout]-(FU:User)
WHERE P.post_id={post_id} AND FU.user_id={poster_user_id}
RETURN U.username,C.comment

如果我使用上面的密码,第一个帖子hello和第二个帖子都将返回相同的评论,这是测试,但它应该是第一个帖子hello只返回评论,而第二个帖子不应该返回属于第一个帖子hello的评论。

我的问题是如何返回属于指定帖子的评论(在这种情况下是第一个帖子hello)?

Plase帮助。如果你有其他好的密码模型,请告诉我。谢谢。

我不确定我理解你的数据模型,但如果你有一个节点为您的用户和节点为每个帖子(即使帖子有相同的文本)你的查询应该工作。你只会得到有评论的文章

您的数据模型看起来很奇怪。也可能是我没有完全理解。

关于如何建模一个博客引擎,我最初的想法是这样的-

节点类型(标签)您需要至少有3种类型的节点。

  1. User -保存系统中的用户
  2. Post -这些将是包含文本
  3. 的实际博客文章
  4. 评论-这些将包含用户的任何评论

以下是这些节点将如何连接…

  • A (User)连接到(Post)所以-(User)-[:AUTHOR]-(Post)
  • A (Post)连接到(Comment)所以-(Post)-[:HAS_COMMENT]-(Comment)
  • A (Comment)连接到(User),所以-(Comment)-[:MADE_BY]-(User)

对于一个简单的博客引擎来说,这应该足够了。

注意:博客文章的每个评论将是一个单独的节点(我不确定是否有其他方法,因为很难在节点的属性部分保留迭代键)。如果多个评论连接到单个节点,那么您可以自动假定它们是该博客文章的评论。

最新更新