首页 > 解决方案 > 如何返回与另一个节点同名但具有特定标签的节点?Neo4J

问题描述

我正在处理财务数据,我想在作为行项目同义词的名称与另一个与该同义词同名但位于与同义词图无关的单独节点中的节点之间找到名称匹配,并且具有需要定义的指定属性类型。

这是一些数据:

 CREATE (n:Test1 {name: "x"})-[r:syn_of]->(s:Test2 {name: "y"})
 CREATE (n:Test3 {value: "x"})

所以Test3和Test1的属性格式存储的值是一样的,只是属性标签不同。如何通过使用 Test1 和/或 Test2 进行查询,从 Test3 的 value 属性返回“x”?我知道这是一个奇怪的问题,由于保密原因,我无法具体说明我为什么要这样做,但如果有人能提供任何帮助,这将是最重要的。提前致谢。

标签: graphneo4jcypher

解决方案


您可以使用 EXISTS。在返回 Test3 的值之前,它将检查 Test1 和 Test2 之间是否存在连接。然后,您可以在查询中设置一个条件,即 Test3.value = 'x'。根据您的输入值,您的查询将如下所示;

给定 Test1.name ='x' 和 Test2.name ='y'

 MATCH (n:Test3 {value: 'x'})
 WHERE EXISTS ( (:Test1 {name: "x"})-[:syn_of]->(:Test2 {name: "y"}) )
 RETURN n

使用 WITH 子句,您有一个变量 nameTest1 并将其分配给 Test3.value

给定 Test2.name = 'y'

MATCH (n:Test1)-[:syn_of]->(:Test2 {name: "y"})
WITH n.name as nameTest1
MATCH (n3:Test3 {value: nameTest1 })
RETURN n3

推荐阅读