当您在箭头上创建带有标签的关系时。如何在未来的某个时候更改标签而不删除关系?有可能吗? 你还可以在另一个标签中修改一组具有相同标签的关系吗?
编辑 我写这个来创建新的和复制属性
MATCH (m)-[old:INVIA_DATI]->(n)
WHERE ID(m) = 11 AND ID(n) = 13
CREATE (m)-[new:INVIA2{name:old.name}]->(n)
DELETE old
RETURN m, new, n
现在工作,但如果我有4个属性,如名称,颜色,连接器,其他? 谢谢大家!
答案 0 :(得分:1)
我们在Neo4j的标签属性图数据模型中有Label
和Relationship Type
的概念。
对于节点上的标签,以下规则适用:
Labels
允许您通过角色将节点分组在一起。Labels
仅适用于节点,节点可以包含零个或多个标签。对于关系,以下规则适用:
Relationship Types
仅适用于关系。Relationship Type
。 Relationship Types
无法更改关系,您必须删除
关系并用一个不同类型的新关系替换它。答案 1 :(得分:1)
你可以创建一个像这样的新关系:
MATCH (m)-[old:OLD_RELATIONSHIP]->(n)
CREATE (m)-[new:NEW_RELATIONSHIP]->(n)
DELETE old
RETURN m, new, n
对于你的例子:
MATCH (m)-[old:INVIA_DATI]->(n)
WHERE ID(m) = 97 AND ID(n) = 115
CREATE (m)-[new:INVIA2]->(n)
DELETE old
RETURN m, new, n
说明:
MATCH (m)-[old:INVIA_DATI]->(n)
WHERE ID(m) = 97 AND ID(n) = 115
这两行分别与ID为97和115的节点匹配,其中(和仅在哪里)它们之间存在INVIA_DATI
关系。 m
绑定到节点ID为97的节点,n
绑定到ID为115的节点,old
绑定到该关系。您可以使用您喜欢的任何值,而不是n,m和old。
CREATE (m)-[new:INVIA2]->(n)
此行创建绑定节点m
和n
之间的新关系,其类型为INVIA2
,您可以在此处另外设置属性。如果要防止创建重复项,可以使用MERGE
而不是create。
DELETE old
这会删除旧的关系。
RETURN m, new, n
返回绑定值。如果您不想这样做,则不必这样做,但在控制台中查看刚刚发生的事情非常方便。
如果你需要设置一个属性,你可以这样做:
CREATE (m)-[new:INVIA2{propname:old.propname}]->(n)
这将使用原始propname属性中的值设置propname
关系属性,您可以通过这种方式设置任意数量的属性。