Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Cypher返回属于Neo4j中指定帖子的评论?_Neo4j_Cypher - Fatal编程技术网

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

如何使用Cypher返回属于Neo4j中指定帖子的评论?,neo4j,cypher,Neo4j,Cypher,正如我所知,在graph数据库中,如果已经创建了另一个相同的节点,则不必再创建另一个节点。所以我有一篇类似这样的帖子: U.username P.post rio hello rio hello U.username P.post C.comment rio hello test rio hello 正如我之前所说的,您不必创建另一个相同的节点,因此上面的两篇文章都将存储在一个节点中。每个节点都可以有一些注释。例如,我

正如我所知,在graph数据库中,如果已经创建了另一个相同的节点,则不必再创建另一个节点。所以我有一篇类似这样的帖子:

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

U.username  P.post
rio         hello
rio         hello
U.username  P.post  C.comment
rio         hello   test
rio         hello
我有这样的cypher查询语言来返回属于第一篇文章的评论:

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

MATCH(U:User)-[G:Give]->(C:Comment)我不确定我是否理解您的数据模型,但是如果您的用户有一个节点,每个帖子有一个节点(即使帖子有相同的文本),您的查询应该可以工作。你只会收到一篇有评论的帖子。

你的数据模型看起来很奇怪。也许我不太明白

关于如何建模博客引擎,我最初的思考过程如下-

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

  • 用户-这在您的系统中保留用户
  • 文章-这些将是包含文本的实际博客文章
  • 注释-这些将包含用户的任何注释
  • 关系 以下是这些节点的连接方式

    • (用户)连接到(Post)so-(用户)-[:作者]-(Post)
    • (Post)连接到(Comment)so-(Post)-[:HAS_Comment]-(Comment)
    • (注释)连接到(用户),因此-(注释)-[:make_BY]-(用户)
    对于一个简单的博客引擎来说,这应该足够了


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

    您可能无法在单个密码查询中正确获取用户、文章和评论。。如果这个型号适合你,让我知道,我会帮你得到你需要的密码查询。谢谢你的帮助。首先我想说我很抱歉,因为我把你弄糊涂了。在与当地朋友协商后,我已经得到了解决方案。在我的例子中,我忘记了
    2个相同的信息不能存储在
    一个节点中。例如
    user A
    posted
    hello
    user A
    posted
    hello
    。其中两个
    hello
    应该存储在
    不同的节点中
    ,因为它们实际上是
    不同的东西
    。事实上,这就是我想咨询你们的问题。我认为
    2个相同的信息可以存储在
    一个节点中
    ,如果它们只有
    一个属性
    。例如,
    用户A
    Neo4j
    工作,
    用户B
    也在
    Neo4j
    工作。其中两个
    Neo4j
    可以存储在
    one node
    中,因为它们实际上是相同的东西,只有一个属性,所以第一个Neo4j和第二个Neo4j之间没有不同的属性。嘿@arijeet。在您的模型中,箭头指向哪个方向?(用户)-[:AUTHOR]->(POST)(POST)-[:HAS_COMMENT]->(COMMENT)(COMMENT)-[:make_BY]->(用户)像这样吗?方向取决于您。不要认为这真的有什么不同。只要它们是连接的,您就应该能够运行密码查询并遍历图形。