2016-08-17 43 views
1
data= { 
       "id": 1, 
       "name": "samuel", 
       "Manager": [ 
        { 
         "id": "", 
         "name": "manager1", 
         "approvers": [325,134], 

          } 
         ] 
        } 

此数据对象,我们也采用了类似给出暗号查询附加功能的Neo4j如何使用密码查询更新Neo4j中的关系详细信息?

 query = "CREATE CONSTRAINT ON (users:user) ASSERT users.name IS UNIQUE"; 

     return cypher(
      { 
       "query": query 
      } 
     ).then(function() { 
       query = "CREATE (user:user{ name:"samuel "}) 
        "RETURN user"; 
       action = "create"; 
       return cypher(
        { 
         "query": query, 

        }); 
      }).then(function (data) { 

       userId = data[0].user._id; 

       return Promise.each(data.manager, function (entry) { 

        query = "MATCH (user: user) WHERE id(user) = " + userId + " " + 
         " OPTIONAL MATCH (managerApprovers:user) WHERE id(managerApprovers) IN [325,134] " + 
         "CREATE (manager: managernode {name: "manager1"})<-[:HAS_MANAGER]-(user) " + 
         "FOREACH (a IN CASE WHEN managerApprovers IS NOT NULL THEN [managerApprovers] ELSE [] END | " + 
         "CREATE (managerApprovers)<-[:HAS_MANAGE_APPROVER]-(managernode)) RETURN user,managernode"; 

        return cypher(
         { 
          "query": query, 

         }).then(function (data) { 
          { 
       res.action = action; 
       res.result = data; 
       return res; 
      }); 
    } 

如果我们想与更新管理器的细节和关系HAS_MANAGE_APPROVER一起更新的用户名,HAS_MANAGER它是如何在Neo4j的

回答

1

你必须MATCH的关系进行的,其存储在一个变量,然后SET你想要的属性:

Match (a:firstNode)-[relation:MY_RELATIONSHIP]->(b:secondNode) 
SET relation.variable="Foo" 

请注意,不建议使用neo4j内部ID,请参见Should we use the Neo4J internal id?