命名规则和建议

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

命名规则

  • 字母字符

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

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

  • 数字

    • 名称不应以数字开头。

    • 例如,不允许使用 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 是有效的,但已弃用。`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 个字符。