14

我对 neo4j 中的命名约定很好奇。

我在他们的示例中注意到关系名称大写,例如

left-[r:KNOWS]->right

那是公约吗?Neo4j 在关系名称中是否区分大小写?索引名称和属性名称是否有其他命名约定?

4

3 回答 3

10

那就是约定。我个人使用小写关系类型,是的,它区分大小写。带下划线。

通常,人们也使用下划线作为索引名称,它们通常是小写的,并且区分大小写。

另外,需要记住的一点是:如果您在创建时不指定方向,则默认为左<--右。对我来说不直观,但现在我总是指定方向。

对于属性,我认为大多数人使用 JSON 样式约定:http: //google-styleguide.googlecode.com/svn/trunk/jsoncstyleguide.xml#Key_Names_in_JSON_Maps

我也看到了属性的下划线,所以我猜它是两种方式。只要保持一致!

于 2012-11-20T23:23:56.953 回答
9

是的,关系名称的约定是将它们全部大写。Neo4j 中的所有名称都区分大小写(标签、关系、属性……)

请记住,这是一个约定,而不是要求。任何项目中最重要的部分是一致性。使用编码风格并始终坚持下去!

Neo4j 命名约定:

  • 标签:UpperCamelCase(又名 PascalCase)
  • 关系:CAPITALIZED_WITH_UNDERSCORE
  • 属性键名:lowerCamelCase 或 snake_case

密码示例:

CREATE (:Person {name:"Anne"})-[:MANAGES {start_date:20121112}]->(:WorkGroup {name:"Dev"});

或者:

CREATE (:Person {name:"Anne"})-[:MANAGES {startDate:20121112}]->(:WorkGroup {name:"Dev"});

参考:

于 2016-11-16T09:55:01.190 回答
0

使用LOWER()UPPER()字符串函数可以更容易地将所有内容变为大写或小写

1-假设我有一个属性 name = 'name' 小写的节点,要找到它,您需要匹配确切的字符串

Query:
CYPHER 2.0
START n=node(*)
WHERE n.name= "name"
RETURN id(n)

id(n)
5

Query took 3 ms and returned 1 rows.

否则你将找不到它:

Query:
CYPHER 2.0
START n=node(*)
WHERE n.name= "Name"
RETURN id(n)


Query took 4 ms and returned no rows.

但是,我们可以使用字符串函数 LOWER() 来匹配它:

CYPHER 2.0
START n=node(*)
WHERE n.name= LOWER("Name")
RETURN id(n)

id(n)
5

Query took 4 ms and returned 1 rows.

2- 使用任意字符串大小写输入节点属性,例如:“NaMe”,以匹配:

START n=node(*)
WHERE LOWER(n.name)= "name"
RETURN id(n)

id(n)
8

Query took 5 ms and returned 1 rows.
于 2014-04-18T14:38:22.987 回答