neo4j密码:返回反转关系

tkclm6bt  于 2023-06-29  发布在  其他
关注(0)|答案(1)|浏览(148)

我们使用的是Neo4j v4。
我有用户、计算机、公司节点(IBM、HP、DELL等),
当公司是IBM时,我想在返回之前扭转优势。
我尝试了apoc.refactor.invert()如下:

MATCH (u:USER {id: 101})
RETURN  
CASE u.preference 
WHEN 'HP'    THEN  [(n:computer)-[r: MANUFACTURED_BY]->(c:HP) | r]
WHEN 'IBM'   THEN [(n:computer)-[r:ASSEMBELED_BY]->(c:IBM) | apoc.refactor.invert(r)] 
WHEN 'DELL'   THEN [(n:computer)-[r:ASSEMBELED_BY]->(c:DELL) | r] 
WHEN 'HP_IBM' THEN xxxxxxx END
AS result;

但是,得到这个错误:输入“% s”无效
你知道吗?

lbsnaicq

lbsnaicq1#

您可以使用apoc.create.vRelationship返回IBM用户的虚拟ASSEMBLED_BY关系(具有反向)。这不会改变数据库中的任何关系。

MATCH (u:USER {id: 101})
RETURN CASE u.preference 
  WHEN 'HP'     THEN [(n:computer)-[r: MANUFACTURED_BY]->(c:HP) | r]
  WHEN 'IBM'    THEN [(n:computer)-[r:ASSEMBLED_BY]->(c:IBM) | apoc.create.vRelationship(c, 'ASSEMBLED_BY', PROPERTIES(r), n)] 
  WHEN 'DELL'   THEN [(n:computer)-[r:ASSEMBLED_BY]->(c:DELL) | r] 
  WHEN 'HP_IBM' THEN [(n:computer)-[r:ASSEMBLED_BY]->(c:HP_IBM) | r] END
AS result;

请注意,上面的查询使用正确拼写的ASSEMBLED_BY关系类型。

相关问题