当前位置: 首页 > 知识库问答 >
问题:

neo4j-match then merge语句,其关系不创建新节点

盖昀
2023-03-14

当我尝试添加带有标签(phonename)的新节点时,这些标签还不存在,并且与现有节点有关系,因此不会创建节点和关系。

这是一个现有关系的前后状态:

匹配(n:identity)-[a:attr]->(attr)返回*

MATCH (n:Identity {id:'4a028061-8dde-4f64-80c9-ae048e3f81fc'})
MERGE (n)-[na:ATTR]->(name:Name {val: 'John Smith'})
MERGE (n)-[pa:ATTR]->(p:Phone {val:2326410083})
RETURN *

我知道这个问题类似于neo4j-merge语句不创建具有关系的新节点,但在我的例子中,我在节点上使用过滤器。我错过了什么?

共有1个答案

燕刚捷
2023-03-14

看起来您试图匹配的:Identity节点在图中不存在。

从您的查询中,您正在查找id:'4A028061-8DDE-4F64-80C9-AE048E3F81FC'的标识节点,但是在您提供的图形图像中,如果我们假设截断的标题是标识节点的id,我们可以看出它以'44B7'开头

现在可能是您试图匹配的节点确实存在,但没有任何传出:attr关系(这可以解释为什么查询不会返回它),但这还没有得到证实。图中是否存在ID:'4A028061-8DDE-4F64-80C9-AE048E3F81FC'的节点?您还没有向我们展示这一点,如果不存在这样的节点,那么匹配将失败,然后就没有行可供其馀合并执行。

 类似资料:
  • 我需要创建一个新的A类节点,它与User节点有关系: 现在,假设我们有新节点A的以下数据: 我试图创建节点A,使新节点A与具有“id”:4和“nodeId”:“0002-0002”(唯一节点标识符)的用户的(现有)节点之间具有关系,但用户节点将字段“name”和“firstName”更新为。 我正在使用GraphRespository代理创建它: 有没有办法不进行此更新,只与用户节点建立关系?

  • 我希望它创建每个节点(而不是在已经存在具有相同ID的节点时创建新节点),并创建每个关系(在CSV中指定具有多个关系的节点中有多个关系from/to节点)。 实际发生的情况:它似乎创建了所有唯一的节点。它还创建了节点之间的关系,但它只为每个节点设置一个关系,而不考虑与多个其他节点进行通信的一些节点。 我很困惑,因为我的理解是,如果在数据库中还没有出现关系,它将创建关系,所以我认为它将创建CSV中指定

  • 在使用@RepositoryRestResource将域对象导出到Rest时,如何在Java中创建Neo4j关系?

  • 我试图在Neo4j中插入两个节点之间的关系。我正在使用Neo4J(2.1.8社区) 我正在使用尝试创建员工经理关系。此关系实体是报表。(两个类都在下面给出) 但当我试图挽救这段感情的时候 我得到了例外作为 线程“main”组织中出现异常。springframework。刀。DataRetrievalFailureException:关系[0]没有propertyKey=“type”的属性。;嵌套的

  • 我试图在Neo4j中创建节点之间的关系。我正在使用Neo4J(2.1.8社区) 我试图创建以下关系。 创建一个新的员工(节点),它将向DB中的Manager(节点)报告(空关系)(按名称搜索)。我使用了下面的查询。 我得到了下面的错误。 谁能告诉我这个问题出了什么问题?另外,如果这不是使用GraphRespository创建关系的正确方法,那么我还可以使用什么来实现同样的目的呢。 提前感谢。 注意