Neo4J - 如何根据属性值创建关系 - 如果存在或不存在?

时间:2017-10-04 11:36:25

标签: neo4j cypher

在现有关系中,我想添加一个。新关系应取决于特定的属性值。

E.g。如果员工在 val scenario = scenario("Scenario") .exitBlockOnFail { exec(loginAction, actionThatEndsWithTheLoop) } setUp(scenario.inject(atOnceUsers(1))) .assertions(global.successfulRequests.percent.is(100)) .protocols(httpProtocol) 属性中具有值-1,那么他应该有一个关系:department_idMEMBER_OF表,如果他有1,2或3,那么他应该有department的关系。

我认为关系的方向(箭头)彼此相反HEAD_OF-[:HEAD_OF]->

要添加的一件重要事情是,部门图中不存在值<-[:MEMBER_OF]-。 dep图的ID从1到8。

换句话说,这可能是这样的:如果任何员工的某个ID在dep Graph中不存在......在这种情况下-1

1 个答案:

答案 0 :(得分:2)

修改

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

第一个查询在拥有:HEAD_OF的所有员工与相应部门之间建立department_id <> -1关系。

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

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

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)