首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改RedisGraph关系中的节点引用

更改RedisGraph关系中的节点引用
EN

Stack Overflow用户
提问于 2021-07-12 20:27:40
回答 1查看 25关注 0票数 0

我开始使用RedisGraph了,在这里得到了一些很好的支持,很高兴周围有一个社区:)

我目前正在尝试实现一件基本的事情:将关系移动到不同的节点:

代码语言:javascript
复制
(bob:User {uid: 1})-[p:Paid {amount: 5, date: "Feb 5 2021 10:10:05"}]->(alice:User {uid: 2})

鲍勃弄错了,他没有付钱给艾丽丝,而是付给约翰,他想解决这个问题。

代码语言:javascript
复制
(bob)-[p]->(john:User {uid: 3})

我必须保留[p]的属性,理想情况下,我甚至应该保留相同的id…

Neo4j有apoc.refactor.mergeNodes函数可以做到这一点,但我不确定如何在RedisGraph中实现类似的结果。

SETWITHDELETE似乎有一种方法,但我不能得到一些语法正确的东西来工作。

有什么线索吗?

感谢分享!:D

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-15 03:20:27

RedisGraph没有与mergeNodes功能等效的功能,也不支持更改现有边的端点。

因此,您需要删除原始边并引入新边:

代码语言:javascript
复制
MATCH (bob:User {uid: 1})-[p:Paid {amount: 5, date: "Feb 5 2021 10:10:05"}]->(alice:User {uid: 2}) WITH bob, p, {amount: p.amount, date: p.date} AS props MATCH (john:User {uid: 3}) DELETE p CREATE (bob)-[p2:Paid]->(john) SET p2=props

如果您的程序知道属性值,并且可以将它们用作文字,则可以将其简化一点:

代码语言:javascript
复制
MATCH (bob:User {uid: 1})-[p:Paid {amount: 5, date: "Feb 5 2021 10:10:05"}]->(alice:User {uid: 2}) DELETE p CREATE (bob)-[p2:Paid {amount: 5, date: "Feb 5 2021 10:10:05"}]->(john)

这两种方法都会导致新的边与前一条边具有相同的ID,因为边ID由DELETE释放并立即由CREATE重用。

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

https://stackoverflow.com/questions/68347381

复制
相关文章

相似问题

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