2017-10-04 194 views
1

在现有的关系中,我想添加一个。新的关系应该取决于特定的属性值。Neo4J - 如何根据属性值创建关系 - 如果存在与否?

E.g.如果员工在department_id财产中的值为-1,那么他应该有一个关系:MEMBER_OFdepartment表,如果他有1,2或3,那么他应该有一个关系为HEAD_OF

而且我觉得对于关系的方向(箭头)是相反补充的是,价值-1不系图中存在相互-[:HEAD_OF]-><-[:MEMBER_OF]-

一个重要的事情。 DEP的图有ID的距离1日至8

换句话说,这可能是这样的:如果任何员工都有其不DEP图中存在......在这种情况下,一个ID -1

回答

1

编辑

通过聊天讨论后,最符合要求的查询是:

第一个查询创建具有department_id <> -1所有员工和各部门之间的关系:HEAD_OF

MATCH (emp:Employee) 
WHERE emp.department_id <> -1 
MATCH (dep:Department) 
WHERE dep.id = emp.department_id 
CREATE (emp)-[:HEAD_OF]->(dep) 

第二查询将创建一个具有department_id = -1员工和随机部门之间的关系:MEMBER_OF

MATCH (emp:Employee {department_id : -1}) 
MATCH (randomDep:Department) 
WITH collect(emp) as emps, randomDep LIMIT 1 
UNWIND emps as emp 
CREATE (emp)-[:MEMBER_OF]->(randomDep) 
+0

关于表...你说得对。这只是一种比较,试图解释我的意思 - 在某种程度上。 –

+0

我确实更新了我的问题...在图表中不存在具有值“-1”的ID。它只存在于一些雇员的图表中。其他人有1,2,3,4或....直到8 –

+0

@ k.vincent让我知道,如果我明白了:如果一个员工有'department_id = 1',你想在这个员工和一个部门之间建立关系'id = 1',对吗? –