在neo4j中更改节点标签

tsd*_*mon 17 neo4j cypher

我创建了一个标签错误的节点.
有没有办法在不重新创建节点标签或关系类型的情况下更改它?我尝试过类似的东西

MATCH n WHERE Id(n)= 14 SET n.Labels ='Person'

但这是错误的......

tst*_*rms 28

MATCH (n:OLD_LABEL {id:14})
REMOVE n:OLD_LABEL
SET n:NEW_LABEL
Run Code Online (Sandbox Code Playgroud)

猜猜这个问题解释了自己.

  • `{id:14}`不对,请改用`ID(n)= 14`.(neo4j 3) (5认同)
  • 我不明白为什么删除relatioship.在我的情况下,它与id几乎没有区别:`MATCH(n:Node)WHERE Id(n)= 14 REMOVE n:节点SET n:Person` (2认同)

jja*_*erg 21

您可以更改与标签关联的节点,但不能更改关系的类型.从概念上讲,如果你将鸡肉从一个鸡舍中取出并放入另一个鸡舍中,你就没有改变鸡肉的含量.但是当你将鸡肉从烤箱中取出并放入口中时,它就不再是鸡了(除了含糊不清).您可以决定打电话给你的猫威威代替查理,但如果你决定要为宠物,而不是猫蟒蛇,它无助于给猫一个新的名字.类似地,节点可以是不同标签的成员并且保持相同的节点,但是关系的类型是组成型的.所以:您可以随意添加和删除标签,但如果您想要不同的关系类型,那么您想要的实际上是一种不同的关系.这也是关系只有一种类型,但节点可以有多个标签的原因.

标签是任意组或节点袋.更换行李的语法已经给出,但为了完整性:

MATCH (n)
WHERE ID(n) = 14 
REMOVE n:Whiskers
SET n:Charlie

MATCH (petless_and_unhappy)-[whiskers:CAT]->(petful_and_unhappy)
DELETE whiskers
CREATE (petless_and_unhappy-[sir_hiss:ANACONDA]->(peftul_and_happy)
Run Code Online (Sandbox Code Playgroud)

  • 如果有针对鸡/猫/蟒蛇示例的类比,我不会遵循它。所有这些东西都是名词,也许你想用动词来表示关系之类的? (2认同)