2012-11-20 118 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"}); 

參考文獻:

相關問題