首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关系的“‘UPSERT”

关系的“‘UPSERT”
EN

Stack Overflow用户
提问于 2014-04-30 14:40:11
回答 1查看 1K关注 0票数 2

使用cypher,我希望在两个节点(nodeA和nodeC)之间创建一个关系。

首先,我必须检查这种关系(nodeA :OWNS nodeC)是否存在。如果没有关系,我想删除:拥有关系nodeA可能与其他其他节点(例如。nodeA :拥有nodeB)和create :在nodeA和nodeC之间拥有。

有什么有效的方法让我用塞弗做这个吗?

谢谢。

编辑:我已经接受了一个答案,但我接受了一个小蛋饼。如果nodeA有多个:OWNS,通过为nodeB提供特定的id,它只会从nodeB中删除:OWNS并与nodeC交换它,对吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-30 16:25:55

我不认为Cypher让你做任何花哨,除了设置合并的“在创建”和“在匹配”。

一种方法可能是在单独的Cypher查询中这样做。

然而,这也可能起到了作用:

代码语言:javascript
复制
MATCH (nodeA {id: <nodeA_id>})-[r:OWNS]->(nodeB), (nodeC {id: <nodeC_id>})
WHERE (nodeB) <> (nodeC)
MERGE (nodeA)-[:OWNS]->(nodeC)
DELETE r

如果可能的话,一定要使用标签来标识节点,例如NodeA:User。这将大大加快速度。

如果这对你有用,请告诉我们。

HTH

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23391116

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档