微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在neo4j cypher查询中收集唯一的相关行?

如何解决如何在neo4j cypher查询中收集唯一的相关行?

我有 3 个帖子,其中 1 个有两个评论。我需要检索 3 个帖子加上 2 个评论和作者。问题是密码返回所有关联的链接。我怎样才能只得到我需要的行?运行此查询时,我得到 72 行......我只期待 4 行:

MATCH (p:Posts)
WITH p
MATCH(c:Comments)-[r:COMMENTED_ON]-()
WITH p,c 
MATCH (u)-[:MADE_A_POST]->()
WITH p,c,u
MATCH (n)-[:POSTED_COMMENT]-() 
RETURN {post:p,comments:c,author:u,commentator:n}

我试图确保每一行只包含与该行相关的属性在这种情况下,我应该有 4 行……因为其中一个帖子有 2 条评论。我查看了 UNION、COLLECT 和 disTINCT,似乎没有一个合适的。任何帮助将不胜感激。

解决方法

在您的查询中,您正在有效地执行以下操作:

  • 匹配所有帖子
  • 匹配所有具有 COMMENTED_ON 关系的评论
  • 匹配所有具有 MADE_A_POST 关系的节点
  • 匹配所有具有 POSTED_COMMENT 关系的节点

由于我没有看到你的数据模型,我只能猜测,但看起来你没有在帖子和评论之间建立直接联系,然后找到那些作者。

猜测一下,我认为您的查询应如下所示:

MATCH (p:Posts)
WITH p
MATCH (n)-[:POSTED_COMMENT]-(c:Comments)-[r:COMMENTED_ON]-(p)
MATCH (u)-[:MADE_A_POST]->(p)
RETURN {post:p,comments:c,author:u,commentator:n}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。