命名规则与建议

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

命名规则

  • 字母字符

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

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

  • 数字

    • 名称不应以数字开头。

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

  • 符号

    • 除下划线外,名称不应包含其他符号(如 my_variable)。如果名称以 $ 开头,则表示一个参数,例如 $myParam

  • 长度

    • 名称可以很长,根据 Neo4j 版本的不同,最长可达 65535 (2^16 - 1) 或 65534 个字符。

  • 区分大小写

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

  • 空白字符

    • 前导和尾随的空白字符会被自动移除。例如,MATCH ( a ) RETURN a 等同于 MATCH (a) RETURN a

在名称中使用特殊字符

名称中可以使用非字母字符(包括数字、符号和空白字符),但必须使用反引号(backticks)引起来。例如:`^n``1first``$$n``my variable has spaces`。数据库名称是一个例外,可以包含点号而无需使用反引号,尽管这种行为已被弃用,因为在处理复合数据库时可能会引入歧义。例如:将数据库命名为 foo.bar.baz 是合法的,但已被弃用。使用 `foo.bar.baz` 是合法的。

在用反引号引起来的名称中,允许使用以下字符表示形式

字符表示 描述

``

反引号

\uxxxx

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

在未清理的用户输入中使用反引号引用的名称会使您面临 Cypher® 注入的风险。减轻此风险的一些方法包括:

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

  • 重构数据模型以避免这种数据访问模式。

作用域和命名空间规则

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

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

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

    • 以下查询是不合法的,因为节点和关系都使用了名称 aCREATE (a)-[a]->(b)

建议

以下是推荐的命名规范:

节点标签

帕斯卡命名法(Pascal case),单词首字母大写,不使用空格或分隔符

:VehicleOwner 而不是 :vehicle_owner 等。

关系类型

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

:OWNS_VEHICLE 而不是 :ownsVehicle 等。

标识符长度限制

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

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

© . This site is unofficial and not affiliated with Neo4j, Inc.