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,我已经用员工数据加载了csv,成功创建了标签和关系。我可以运行以下命令: MATCH p=()-[r:is_over]->() RETURN p 我得到了一群群的经理和员工,但他们没有联系。我如何获得这些关系的可靠链接 编辑 以下是我用来定义所有内容的设置: USING PERIODIC COMMIT 10000 LOAD CSV WITH HEADERS FROM "file:///ldap.csv" AS row MERGE (C:Company {Company: row.com

我已经用员工数据加载了csv,成功创建了标签和关系。我可以运行以下命令:

MATCH p=()-[r:is_over]->() RETURN p
我得到了一群群的经理和员工,但他们没有联系。我如何获得这些关系的可靠链接

编辑

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

USING PERIODIC COMMIT 10000 LOAD CSV WITH HEADERS FROM "file:///ldap.csv" AS row 
MERGE (C:Company {Company: row.company})
MERGE (N:Name {Name: row.user_name})
MERGE (M:Manager {Manager: row.manager_name})
MERGE (B:BU {BU: row.bus_unit})
MERGE (T:Title {Title: row.title})
MERGE (CC:CostCenter {CostCenter: row.cost_center})
MERGE (D:Dept {Dept: row.dept})
MERGE (E:Mail {Dept: row.mail})
MERGE (DN:DisplayName {DisplayName: row.display_name})
ON CREATE SET N.DisplayName = row.display_name,N.UserName = row.user_name,N.Mail = row.mail,N.Title = row.title,N.Dept = row.dept,N.BU =  row.bus_unit,N.Manager = row.manager_name,N.CostCenter = row.cost_center,N.Company = row.company
MERGE (N)-[:works_at]->(C)
MERGE (N)-[:has_bu]->(B)
MERGE (N)-[:has_title]->(T)
MERGE (N)-[:has_cc]->(CC)
MERGE (N)-[:works_in]->(D)
MERGE (M)<-[:is_over]-(DN);
使用定期提交10000加载带有标题的CSV,从“file:///ldap.csv“作为一排
合并(C:Company{Company:row.Company})
合并(N:Name{Name:row.user_Name})
合并(M:Manager{Manager:row.Manager\u name})
合并(B:BU{BU:row.bus_unit})
合并(T:Title{Title:row.Title})
合并(CC:CostCenter{CostCenter:row.cost\u center})
合并(D:Dept{Dept:row.Dept})
合并(电子邮件{Dept:row.Mail})
合并(DN:DisplayName{DisplayName:row.display\u name})
在创建集合时,N.DisplayName=row.display\u name,N.UserName=row.user\u name,N.Mail=row.Mail,N.Title=row.Title,N.Dept=row.Dept,N.BU=row.bus\u unit,N.Manager=row.Manager\u name,N.CostCenter=row.cost\u center,N.Company=row.Company
合并(N)-[:在]->(C)处工作
合并(N)-[:has_bu]->(B)
合并(N)-[:具有标题]->(T)
合并(N)-[:has_cc]->(cc)
合并(N)-[:工作于]->(D)

合并(M)按照您组织数据加载的方式,
Manager
始终位于
DisplayName
之上。您没有完整的层次结构,因为
DisplayName
从来都不是
而是
Manager

所以,有一大堆单独的断开的链是有道理的。
is\u over
关系始终从管理器变为显示名

我假设
行.display\u name
为您提供了一个与其他
管理器
匹配的名称。我会考虑去掉<代码> DISPLAYNET/<代码>和<代码>管理器> /代码>和模型,两者都只是“代码>雇员< /代码>。然后说
(e1:Employee)-[:结束]->(e2:Employee)

您缺少的最后一部分是,您需要在数据中确保
display\u name
的某些值与
manager\u name
的其他行值匹配。如果这不是真的,那么无论您做什么,数据都不会连接

我假设数据如下:

管理器名称,显示名称
A、 B
B、 C


现在加载的方式是,管理器A位于显示名称B之上,管理器B位于显示名称C之上,但“显示名称B”和“管理器B”不同,没有任何联系。

按照您组织数据加载的方式,管理器始终位于显示名称A之上。您没有完整的层次结构,因为
DisplayName
从来都不是
而是
Manager

所以,有一大堆单独的断开的链是有道理的。
is\u over
关系始终从管理器变为显示名

我假设
行.display\u name
为您提供了一个与其他
管理器
匹配的名称。我会考虑去掉<代码> DISPLAYNET/<代码>和<代码>管理器> /代码>和模型,两者都只是“代码>雇员< /代码>。然后说
(e1:Employee)-[:结束]->(e2:Employee)

您缺少的最后一部分是,您需要在数据中确保
display\u name
的某些值与
manager\u name
的其他行值匹配。如果这不是真的,那么无论您做什么,数据都不会连接

我假设数据如下:

管理器名称,显示名称
A、 B
B、 C


现在加载的工作方式是,管理器A在显示名称B上,管理器B在显示名称C上,但是“显示名称B”和“管理器B”不同并且没有连接。

返回节点(p)和关系(p)
对您有效吗?没有相同的结果。我有一组经理->员工,但经理本身与他们的下属没有联系。我的关系和/或数据结构是否可能不正确?我做了一个简单的合并(M)
返回节点(p)和关系(p)
对你有用吗?没有相同的结果。我有一组经理->员工,但经理本身与他们的下属没有联系。我的关系和/或数据结构是否可能不正确?我做了一个简单的合并(M)谢谢你Frobber!谢谢你,弗罗伯!