我在 trartsaris.gr 上完全使用 php 和 Neo4j 2.0 制作了我的博客。在进行了大量测试并考虑了未来之后,我决定以您描述的第一种方式启用评论。这意味着在您的架构设计结束时,您的数据库应该如下所示
(m:Post "或主题")-[:COMMENT]-(n:Comment)-[:SUB_COMMENT]-(s:SubComment)
所以我们有一个节点,它是帖子或主题,这个节点连接了带有标签:评论和关系:评论的节点,这些评论可以有带有标签的子评论:SUB_COMMENTS。您不必担心将创建的节点数量以及如何获取它们,因为一切都足够快。您可以阅读我对这个问题的回答。让我们看看为什么我更喜欢第一种方式,我正在考虑未来的潜在用例。稍后您可以有这样的事情:我是一个用户,我对另一个用户的主题的评论发表了评论。基于此操作,我可以在我的数据库中搜索该用户的相关主题并提出进一步阅读的建议。
MATCH (n:User(ID))-[:WROTE_SUB_COMMENT]-(s:SubComment)-[:SUB_COMMENT]-(c:Comment)-[:COMMENT]-(p:Post)-[:WRITTEN_BY]-(k:User)-[:WRITTEN_BY]-(g:Post) WHERE blablabla RETURN g
以一种简化的方式,我们说我们想要找到由初始用户为其撰写子评论的用户撰写的所有帖子。现在可能看起来有点混乱,但是随着你越来越深入 Neo4j,你会发现一切都会一天比一天容易。我希望这会有所帮助。