更改 RedisGraph 关系中的节点引用
Changing node reference in RedisGraph relationship
我开始使用 RedisGraph 并在这里得到了一些很好的支持,很高兴有一个围绕它的社区:)
我目前正在尝试实现一个基本的目标:将关系移动到不同的节点:
(bob:User {uid: 1})-[p:Paid {amount: 5, date: "Feb 5 2021 10:10:05"}]->(alice:User {uid: 2})
鲍勃错了,他没有付钱给爱丽丝,而是付给约翰,他想解决这个问题。
(bob)-[p]->(john:User {uid: 3})
我必须保留 [p]
的属性,理想情况下我什至会保留相同的 ID…
Neo4j 有 apoc.refactor.mergeNodes
函数可以做到这一点,但我不确定如何在 RedisGraph 中实现类似的结果。
SET
、WITH
和 DELETE
似乎有一种方法,但我找不到语法正确的方法。
有什么线索吗?
感谢分享! :D
RedisGraph 没有与 mergeNodes
功能等效的功能,也不支持更改现有边的端点。
因此,您需要删除原始边并引入新边:
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
如果您的程序知道 属性 值并且可以将它们用作文字,这可以稍微简化:
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
重新使用。
我开始使用 RedisGraph 并在这里得到了一些很好的支持,很高兴有一个围绕它的社区:)
我目前正在尝试实现一个基本的目标:将关系移动到不同的节点:
(bob:User {uid: 1})-[p:Paid {amount: 5, date: "Feb 5 2021 10:10:05"}]->(alice:User {uid: 2})
鲍勃错了,他没有付钱给爱丽丝,而是付给约翰,他想解决这个问题。
(bob)-[p]->(john:User {uid: 3})
我必须保留 [p]
的属性,理想情况下我什至会保留相同的 ID…
Neo4j 有 apoc.refactor.mergeNodes
函数可以做到这一点,但我不确定如何在 RedisGraph 中实现类似的结果。
SET
、WITH
和 DELETE
似乎有一种方法,但我找不到语法正确的方法。
有什么线索吗?
感谢分享! :D
RedisGraph 没有与 mergeNodes
功能等效的功能,也不支持更改现有边的端点。
因此,您需要删除原始边并引入新边:
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
如果您的程序知道 属性 值并且可以将它们用作文字,这可以稍微简化:
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
重新使用。