命名规则和建议
此页面描述了节点标签、关系类型、属性名称、变量、索引和约束的命名规则和建议。
命名规则
-
字母字符
-
名称应以字母字符开头。
-
这包括“非英语”字符,例如
å
、ä
、ö
、ü
等。
-
-
数字
-
名称不应以数字开头。
-
例如,
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
是完全有效的。
在转义的名称内,允许以下转义序列
转义序列 | 字符 |
---|---|
|
反引号 |
|
Unicode UTF-16 代码点( |
使用未经清理的用户输入的转义名称会使您容易受到 Cypher® 注入的攻击。一些缓解此问题的技术是
|
一些特殊字符已被弃用,并且在 Neo4j 的下一个主要版本中需要转义。有关已弃用字符的完整列表,请参阅弃用页面。 |
作用域和命名空间规则
-
节点标签、关系类型和属性名称可以重复使用名称。
-
以下查询(使用
a
作为标签、类型和属性名称)是有效的:CREATE (a:a {a: 'a'})-[r:a]->(b:a {a: 'a'})
。
-
-
节点和关系的变量在相同查询作用域内不得重复使用名称。
-
以下查询无效,因为节点和关系都命名为
a
:CREATE (a)-[a]->(b)
。
-