如果存在则更新两个节点之间的关系,如果不存在则创建新的关系 NEO4j

用户74091

我想写一个查询;

  • 如果一个节点已经存在,则更新两个节点之间的关系,或者
  • 如果关系不存在,则在两个节点之间创建一个。

实际上,这是允许程序的一个用户“阻止”该程序的另一个用户,无论这两个用户之前是否有任何类型的关系(可以有任意数量的关系)。对于查询的一半,如果存在,则可选地返回关系;

MATCH (a:user {name: {aParam}) 
OPTIONAL MATCH (a) -[r]- (b:user {name: {bParam}) 
RETURN type(r), a

对于查询的另一半,更新两个节点之间的关系(假设它已经存在);

MATCH (a:user {name: {aParam}) <- [r:originalRelationship] - (b:user {name: {bParam})
WITH a, r, b
MERGE (a) - [:updatedRelationship] - (b)
WITH r
DELETE r

但是结合这两个我还没有生成一个工作示例,我尝试将它们组合在一起,但弗兰肯斯坦并没有活过来;

MATCH (a:user {name: {aParam})
OPTIONAL MATCH (a) - [r] - (b:user {name: {bParam})
WITH a, b, r
MERGE (a) - [:block] -> (b)
WITH r
DELETE r

有人可以在这里指出我的错误并指出正确的方向吗?

喜满树耆那教

由于您涉及多个关系,并且您想删除所有现有关系并将其替换为 Blocked,您可以尝试以下操作:

Match (p1:Person{name:"hj"}),(p2:Person{name:"bg"})
OPTIONAL Match (p1)-[r]->(p2) where TYPE(r)<>"Blocked"
MERGE (p1)-[:Blocked{blocked: True}]->(p2)
DELETE r
return *

保留以下部分以防它对某人有帮助。如果您只有 1 种类型的关系,并且只想更新值,则可以使用以下命令:

您可以将Merge子句与ON MATCHON CREATE选项一起使用。

由于你没有明确指定节点和关系结构,我再举一个例子。考虑 2 Person 节点,其中字段“name”唯一标识该人。

如果不存在,则查询会创建关系,如果它已经存在,您可以指定要更新的字段。

Match (p1:Person{name:"hj"}),(p2:Person{name:"bg"})
Merge (p1)-[r:originalRelationship]->(p2)
ON CREATE SET r.created = True
ON MATCH SET r.updated = True
return p1,p2,r

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Neo4J中,创建两个节点之间的关系,但是如果其中一个节点不存在,则在同一调用中创建关系

如果不存在则在 Neo4j 中创建关系,如果存在则更新属性值

如果neo4j中存在任何关系,则创建一个新关系

如果属性存在,则 Neo4J 合并节点并创建另一个具有关系的节点

在neo4j中的两个节点之间创建多个关系

如何使用neo4j的.net客户端检查两个节点之间是否存在关系

如果NEO4J中存在先前的关系,则更新关系属性

如何在neo4j中创建具有相同节点名称的两个节点之间的关系

Neo4J如何在已经存在的2个节点之间添加关系

Neo4J 优化创建节点之间的关系

在neo4j中创建节点之间的关系

如何找到neo4j中两个节点之间最短的关系?

计算两个特定节点之间的关系数 - Neo4j / Cypher

使用Cypher在Neo4j中的两个节点之间创建相同类型的多个关系

列表中的 Neo4j 匹配(如果存在或不存在)

neo4j更新数组属性(如果存在)

Neo4j如何在列表中的Neo4j中创建节点的关系?

Neo4j gem-查询不存在的关系

Neo4j - 为不存在的关系包含 Null 值

匹配两个或多个关系(AND)关系的Neo4j节点的表达

仅当neo4j中不存在节点时,才如何创建节点?

在Neo4j(4.1.3)中,如果一个节点不存在,我如何一个接一个地匹配3个节点

Neo4j,如何返回两个节点之间的路径不止一个的节点和关系

Neo4j混合节点之间是否存在扩展关系

Neo4j关系属性索引

Neo4j 建模关系查询

neo4j与单向关系

Neo4j双向关系

Neo4j亲子关系