我对neo4j中的命名约定感到好奇。
我在他们的例子中注意到关系名称大写,例如
left-[r:KNOWS]->right
这是惯例吗? neo4j在关系名称中是否区分大小写?是否有关于索引名称和属性名称的其他命名约定?
答案 0 :(得分:7)
这就是惯例。我个人使用小写关系类型,是的,它区分大小写。带下划线。
通常,人们也会使用下划线作为索引名称,它们通常是小写的,也是区分大小写的。
另外,需要记住的事项是:如果在创建时未指定方向,则默认为< - right。对我来说不直观,但现在我总是指定方向。
对于属性,我认为大多数人使用JSON样式约定:http://google-styleguide.googlecode.com/svn/trunk/jsoncstyleguide.xml#Key_Names_in_JSON_Maps
我也看到了属性的下划线,所以我猜它是两种方式。只是保持一致!
答案 1 :(得分:4)
是的,关系名称的约定是让它们为ALL_UPPERCASE。 Neo4j中的所有名称都区分大小写(标签,关系,属性......)
请记住,这是一项惯例,而非要求。 任何项目中最重要的部分是一致性。 使用编码风格并始终坚持下去!
Neo4j命名约定:
Cypher示例:
CREATE (:Person {name:"Anne"})-[:MANAGES {start_date:20121112}]->(:WorkGroup {name:"Dev"});
可替换地:
CREATE (:Person {name:"Anne"})-[:MANAGES {startDate:20121112}]->(:WorkGroup {name:"Dev"});
参考文献:
答案 2 :(得分:0)
使用 LOWER()和 UPPER()字符串函数
可以更轻松地将所有内容整合到大写或小写1-假设我有一个属性名称为''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-使用任意字符串案例ex:“NaMe”输入节点属性,以匹配:
START n=node(*)
WHERE LOWER(n.name)= "name"
RETURN id(n)
id(n)
8
Query took 5 ms and returned 1 rows.