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
Neo4j-为每个节点返回多组行_Neo4j_Cypher - Fatal编程技术网

Neo4j-为每个节点返回多组行

Neo4j-为每个节点返回多组行,neo4j,cypher,Neo4j,Cypher,我有1000个员工节点,它们属于7个部门。我正在尝试按降序获取财务部门每个员工发送给其他员工的前10条消息。我还需要他向其发送信息的员工部门。根据这两个问题的答案,我使用以下查询: 和 但我得到的结果是每个员工向每个部门的其他员工发送的前10条消息(每个员工总共70条消息)。我想要的结果包括所有部门的总和,而不是每个部门10个结果 我使用的查询是: MATCH(e:Employee{div:'finance'}),(b:Employee) OPTIONAL MATCH (e)-[r:Messag

我有1000个员工节点,它们属于7个部门。我正在尝试按降序获取财务部门每个员工发送给其他员工的前10条消息。我还需要他向其发送信息的员工部门。根据这两个问题的答案,我使用以下查询: 和 但我得到的结果是每个员工向每个部门的其他员工发送的前10条消息(每个员工总共70条消息)。我想要的结果包括所有部门的总和,而不是每个部门10个结果

我使用的查询是:

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我现在更新了查询中的一个键入错误。请告诉我它是否适合你。