命名规则和建议
本页面描述了节点标签、关系类型、属性名称、变量、索引和约束的命名规则和建议。
命名规则
-
字母字符
-
名称应以字母字符开头。
-
这包括“非英文字符”,例如
å
、ä
、ö
、ü
等。
-
-
数字
-
名称不应以数字开头。
-
例如,不允许使用
1first
,而允许使用first1
。
-
-
符号
-
名称不应包含符号,除了下划线(如
my_variable
),或者$
作为第一个字符来表示一个参数(如$myParam
)。
-
-
长度
-
可以非常长,最长可达
65535
(2^16 - 1
) 或65534
个字符,具体取决于 Neo4j 的版本。
-
-
区分大小写
-
名称区分大小写,因此
:PERSON
、:Person
和:person
是三个不同的标签,而n
和N
是两个不同的变量。
-
-
空格字符
-
前导和尾随空格字符将自动移除。例如,
MATCH ( a ) RETURN a
等同于MATCH (a) RETURN a
。
-
在名称中使用特殊字符
非字母字符,包括数字、符号和空格字符,可以用于名称中,但必须使用反引号引用。例如:`^n`
、`1first`
、`$$n`
和 `my variable has spaces`
。数据库名称是一个例外,可以包含点而无需使用反引号引用,尽管此行为已被弃用,因为它在处理复合数据库时可能引入歧义。例如:将数据库命名为 foo.bar.baz
是有效的,但已弃用。`foo.bar.baz`
是有效的。
在反引号引用的名称中,允许使用以下字符表示形式
字符表示 | 描述 |
---|---|
|
反引号 |
|
Unicode UTF-16 码点( |
使用带有未清理用户输入的反引号引用名称会使您容易受到 Cypher® 注入攻击。缓解此问题的一些技术包括:
|
一些特殊字符已被弃用,并在 Neo4j 的下一个主要版本中需要转义。有关弃用字符的完整列表,请参阅弃用页面。 |
作用域和命名空间规则
-
节点标签、关系类型和属性名称可以重用。
-
以下查询(其中
a
用作标签、类型和属性名称)是有效的:CREATE (a:a {a: 'a'})-[r:a]->(b:a {a: 'a'})
。
-
-
节点和关系的变量在同一查询作用域内不得重用名称。
-
以下查询无效,因为节点和关系都使用名称
a
:CREATE (a)-[a]->(b)
。
-