在neo4j的merge子句中冒号是什么意思?

时间:2019-05-08 17:16:15

标签: neo4j cypher

MERGE (robert:Critic)
RETURN robert, labels(robert)

因为数据库中没有标记为Critic的节点,所以创建了一个新节点。 但是罗伯特是什么?冒号是什么意思?

MERGE (charlie { name: 'Charlie Sheen', age: 10 })
RETURN charlie

将创建一个名为“ Charlie Sheen”的新节点,因为并非所有属性都与现有的“ Charlie Sheen”节点匹配。 但是在此示例中,没有冒号,为什么仍然返回变量charlie?

2 个答案:

答案 0 :(得分:2)

  1. robert是一个变量名,仅在使用该变量的查询中才有意义(并且不保存在数据库中)。它是在第一次在查询中使用时定义和实例化的,并且此后只要没有WITH子句,查询将始终使用robert来引用同一节点(或关系,路径...)。

    WITH子句将仅继承其指定的变量。因此,WITH robert, foo将允许在robert子句之后使用相同的WITH变量名称和值。但是WITH foo将导致robert被遗忘。

  2. 节点中使用冒号来指定以下名称为label。在关系中也使用它来指定以下名称为type

答案 1 :(得分:0)

在此密码中,robert是节点,而Critic是节点标签

MERGE (robert:Critic)

在下面,您将创建一个节点(没有节点标签),并具有属性名称和年龄

MERGE (charlie { name: 'Charlie Sheen', age: 10 })

请尝试以下。注意节点标签之前的冒号

MERGE (:Critic)

简而言之,在您的示例中,冒号是您区分创建节点或节点标签或同时创建二者的一种方法。