命名规则和建议

此页面描述了节点标签、关系类型、属性名称、变量、索引和约束的命名规则和建议。

命名规则

  • 字母字符

    • 名称应以字母字符开头。

    • 这包括“非英语”字符,例如 åäöü 等。

  • 数字

    • 名称不应以数字开头。

    • 例如,1first 不允许,而 first1 允许。

  • 符号

    • 名称不应包含符号,除非下划线,如 my_variable,或 $ 作为第一个字符表示参数,如 $myParam 所示。

  • 长度

    • 可以非常长,最多 65535 (2^16 - 1) 或 65534 个字符,具体取决于 Neo4j 的版本。

  • 区分大小写

    • 名称区分大小写,因此,:PERSON:Person:person 是三个不同的标签,而 nN 是两个不同的变量。

  • 空格字符

    • 开头和结尾的空格字符将被自动删除。例如,MATCH ( a ) RETURN a 等效于 MATCH (a) RETURN a

在名称中使用特殊字符

包括数字、符号和空格字符在内的非字母字符,**可以**用于名称,但**必须**使用反引号进行转义。例如:`^n``1first``$$n``my variable has spaces`。数据库名称是一个例外,可以在不需要转义的情况下包含点。例如:将数据库命名为 foo.bar.baz 是完全有效的。

在转义的名称内,允许以下转义序列

转义序列 字符

``

反引号

\uxxxx

Unicode UTF-16 代码点(\u 后必须跟 4 个十六进制数字)

使用未经清理的用户输入的转义名称会使您容易受到 Cypher® 注入的攻击。一些缓解此问题的技术是

  • 清理(并验证)用户输入。

  • 重新设计您的数据模型以避免这种数据访问模式。

一些特殊字符已被弃用,并且在 Neo4j 的下一个主要版本中需要转义。有关已弃用字符的完整列表,请参阅弃用页面

作用域和命名空间规则

  • 节点标签、关系类型和属性名称可以重复使用名称。

    • 以下查询(使用 a 作为标签、类型和属性名称)是有效的:CREATE (a:a {a: 'a'})-[r:a]->(b:a {a: 'a'})

  • 节点和关系的变量在相同查询作用域内不得重复使用名称。

    • 以下查询无效,因为节点和关系都命名为 aCREATE (a)-[a]->(b)

建议

以下是推荐的命名约定

节点标签

驼峰式命名法,以大写字符开头

:VehicleOwner 而不是 :vehicle_owner 等。

关系类型

大写,使用下划线分隔单词

:OWNS_VEHICLE 而不是 :ownsVehicle 等。

标识符长度限制

Neo4j 的块格式实现了GQL 的对标识符最大长度的限制。

标识符中的最大限制设置为 16,383 个字符。这意味着节点标签、关系类型和属性键不能包含超过 16,383 个字符。