【发布时间】:2017-06-27 14:37:58
【问题描述】:
我有 1000 个员工节点,它们属于 7 个部门。我试图让财务部门的每个员工按降序发送给其他员工的前 10 条消息。我还想要他向其发送消息的员工部门。我正在根据这两个问题中给出的答案使用以下查询: return top n results for each query in Neo4j 和Getting top n records for each group in neo4j, 但我得到的结果是每个员工发送给每个部门其他员工的前 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
我应该对此查询进行哪些更改?在此先感谢
【问题讨论】:
-
您可以与我们分享一个 Cypher 脚本来构建示例数据集和预期结果吗?
-
每个员工节点有 2 个属性他的名字和部门。它们之间的交互由关系“消息”给出,该关系具有属性“NUMBER_OF_MESSAGES”。这是我想要获得的输出类型的链接:1drv.ms/t/s!AoPLdWnC_z5RjuUiFQ9tdmoDa2BbfQ
-
亲爱的 Bruno,该图是从 csv 文件构建的,我不确定如何为此构建示例。我希望我试图得到的输出对你有意义。