Neo4J:员工/经理层级

时间:2017-10-27 13:42:23

标签: neo4j cypher

我已经加载了一份包含员工数据,成功创建标签和关系的csv。我可以运行以下内容:

mlist=[[[1,1,1],[0,1,0]],[[0,0,2]],[[1,1,1],[2,2,2],[2,2,1]]]
A = mlist[0]
A1,A2 = A[0],A[1]
B = mlist[1]
C = mlist[2]
C1,C2,C3 = C[0],C[1],C[2]
A = [(x + y)/2 for x,y, in zip(A1,A2)]
C = [np.sum(x)/len(x) for x in zip(C1,C2,C3)]
new_list = [A,B,C]

我收回了经理和员工的集群,但他们已断开连接。如何获得这些关系的可靠链接?

修改

以下是我用来定义所有内容的设置:

MATCH p=()-[r:is_over]->() RETURN p

M和DN的格式相同。

1 个答案:

答案 0 :(得分:2)

您组织数据加载的方式,Manager始终超过DisplayName。您没有完整的层次结构,因为DisplayName永远不会is_over成为Manager

因此,您可以获得一堆单独的断开链。 is_over关系始终从Manager到DisplayName。

我假设row.display_name为您提供了与其他Manager匹配的名称。我会考虑删除DisplayNameManager并将其模型化为Employee。然后只说(e1:Employee)-[:is_over]-> (e2:Employee)

您遗失的最后一部分是,您需要在数据中确保display_name的某些值与manager_name的其他行值相匹配。如果不是这样,那么无论你做什么,数据都不会连接。

我假设这样的数据: manager_name,display_name A,B B,C

您的负载现在的工作方式,您将获得经理A is_over显示名称B,而经理B超过显示名称C,但是"显示名称B"和"经理B"是不同的,没有联系。