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

          } 
         ] 
        } 

для этого объекта данных, мы сделали функцию добавления, используя аналогичный данный Cypher запрос в Neo4jКак обновить данные о взаимоотношениях в Neo4j, используя запрос cypher?

 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 не рекомендуется, см. Should we use the Neo4J internal id?

Смежные вопросы