Neo4j-为每个节点返回多组行
我有1000个员工节点,它们属于7个部门。我正在尝试按降序获取财务部门每个员工发送给其他员工的前10条消息。我还需要他向其发送信息的员工部门。根据这两个问题的答案,我使用以下查询: 和 但我得到的结果是每个员工向每个部门的其他员工发送的前10条消息(每个员工总共70条消息)。我想要的结果包括所有部门的总和,而不是每个部门10个结果 我使用的查询是:Neo4j-为每个节点返回多组行,neo4j,cypher,Neo4j,Cypher,我有1000个员工节点,它们属于7个部门。我正在尝试按降序获取财务部门每个员工发送给其他员工的前10条消息。我还需要他向其发送信息的员工部门。根据这两个问题的答案,我使用以下查询: 和 但我得到的结果是每个员工向每个部门的其他员工发送的前10条消息(每个员工总共70条消息)。我想要的结果包括所有部门的总和,而不是每个部门10个结果 我使用的查询是: MATCH(e:Employee{div:'finance'}),(b:Employee) OPTIONAL MATCH (e)-[r:Messag
MATCH(e:Employee{div:'finance'}),(b:Employee)
OPTIONAL MATCH (e)-[r:Message]->(b)
WITH e.name as em, b.division_name as bm,coalesce(r.NUMBER_OF_MESSAGES,0)
as msg
ORDER BY msg DESC
WITH collect(msg) AS bts, em, bm
UNWIND bts[0..10] AS r
RETURN em, bm, r
我应该对此查询进行哪些更改?提前感谢Ram,我认为使用apoc.cypher.run是一个很好的选择。通过此过程,您将能够为在财务部门工作的每个员工运行“子查询”。请安装APOC程序并尝试:
MATCH(e:Employee{div:'finance'})
CALL apoc.cypher.run('
WITH {e} AS e
OPTIONAL MATCH (e)-[r:ACTED_IN]->(b:Employee)
RETURN e.name, b.division_name, coalesce(r.NUMBER_OF_MESSAGES,0) as messages
ORDER BY messages DESC
LIMIT 10',
{e:e}) YIELD value
return value
注意:请记住根据Neo4j版本安装APOC程序。请参阅。Ram,我认为使用
apoc.cypher.run
是一个很好的选择。通过此过程,您将能够为在财务部门工作的每个员工运行“子查询”。请安装APOC程序并尝试:
MATCH(e:Employee{div:'finance'})
CALL apoc.cypher.run('
WITH {e} AS e
OPTIONAL MATCH (e)-[r:ACTED_IN]->(b:Employee)
RETURN e.name, b.division_name, coalesce(r.NUMBER_OF_MESSAGES,0) as messages
ORDER BY messages DESC
LIMIT 10',
{e:e}) YIELD value
return value
注意:请记住根据Neo4j版本安装APOC程序。请参阅。您可以与我们共享一个Cypher脚本,以构建示例数据集和预期结果?每个员工节点有两个属性—其名称和部门。它们之间的交互由关系“Message”给出,该关系具有属性“NUMBER\u OF_MESSAGES”。这里有一个链接指向我试图获得的输出类型:亲爱的Bruno,该图是从csv文件构建的,我不确定如何构建该示例。我希望我试图获得的输出对您有意义。您可以与我们共享一个密码脚本,以构建示例数据集和预期结果?每个员工节点有两个属性—其名称和部门。它们之间的交互由关系“Message”给出,该关系具有属性“NUMBER\u OF_MESSAGES”。这里有一个链接指向我试图获得的输出类型:亲爱的Bruno,该图是从csv文件构建的,我不确定如何构建该示例。我希望我试图得到的结果对你有意义。嗨,布鲁诺,我试过这个。只有10名员工按降序发送了最多的邮件。@Ram,我用APOC程序更新了答案,并给出了建议。请尝试一下,告诉我结果。如果查询未按预期工作,我将对其进行调整。谢谢。亲爱的布鲁诺,我已经安装了apoc插件的适当版本。我使用的是neo4j企业版压缩版。我收到以下错误:
apoc.cypher.run由于访问权限受限而不可用,请检查配置
@Ram,查看有关错误的信息。@Ram我现在更新了查询中的一个键入错误。请告诉我它对你是否有效。嗨,布鲁诺,我试过这个。只有10名员工按降序发送了最多的邮件。@Ram,我用APOC程序更新了答案,并给出了建议。请尝试一下,告诉我结果。如果查询未按预期工作,我将对其进行调整。谢谢。亲爱的布鲁诺,我已经安装了apoc插件的适当版本。我使用的是neo4j企业版压缩版。我收到以下错误:apoc.cypher.run由于访问权限受限而不可用,请检查配置
@Ram,查看有关错误的信息。@Ram我现在更新了查询中的一个键入错误。请告诉我它是否适合你。