Neo4j标识符可以以整数开头吗?

时间:2018-04-25 01:09:56

标签: neo4j

MATCH (p:Product {id:'19134046594'})-[r]-> (o:Attributes {4g:'network'}) return o

我收到了这个例外:

Exception in thread "main" java.lang.RuntimeException: org.neo4j.driver.v1.exceptions.ClientException: Invalid input ':': expected an identifier character, whitespace or '}' (line 1, column 66 (offset: 65))

抱怨'4g'。 '4g'是neo4j中无效的属性密钥标识符吗?如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

您可以使用反引号(`)字符来引用以非法字符开头的属性名称。

例如,这可行:

CREATE (o:Attributes {`4g`: 'network'})
RETURN o;

这也有效:

MATCH (o:Attributes) WHERE o.`4g` = 'network'
RETURN o;

答案 1 :(得分:2)

根据文档的naming rules section,您使用的名称(包括属性键):

  

必须以字母开头。

  

可以包含数字,但不能包含第一个字符。

然而,您可以使用下划线开始,因此_4g:'network'可以正常工作。

我猜这只是为了举例,但在我看来反过来会更好:network:'4g'