2012-11-20 122 views
8

我很好奇neo4j中的命名约定。什么是neo4j命名约定?

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

left-[r:KNOWS]->right 

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

回答

6

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

通常,人们使用下划线索引的名字为好,而且他们通常比较低的情况下,也区分大小写。

另外,要记住的东西:如果您在创建时未指定方向,则默认值为< - 正确。对我来说不直观,但现在我只是总是指定方向。

有关属性,我想大多数人使用JSON风格约定:http://google-styleguide.googlecode.com/svn/trunk/jsoncstyleguide.xml#Key_Names_in_JSON_Maps

我也看到了下划线的性质,所以我想它去任何一种方式。只要一致!

+0

如果你想空间,你可以。你需要把关系类型放入反引号中。在MySQL中,语法通常用于带空格的对象名称。 – ADTC

0

可能更容易使一切都使用LOWER()UPPER()字符串函数

大写或小写

1让我们假设我有一个属性名=“名称的节点“在较低的情况下,要找到它,你需要匹配againt完全匹配的字符串

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-随着节点属性与任意字符串的情况下进入前: “名称”,来匹配:

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

id(n) 
8 

Query took 5 ms and returned 1 rows. 
2

是的,对于关系名称的约定是让他们ALL_UPPERCASE。在Neo4j的所有名称是区分大小写(标签,关系,性质,...)

请记住,这是一个惯例,并不是必需的。 任何项目中最重要的部分是一致性。 使用的编码风格,并坚持下去惠顾!

Neo4j的命名约定:

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

Cypher支架的例子:

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

或者:

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

参考文献:

相关问题