Neo4j(2.2.0):Cypher:创建节点及其ID

时间:2015-03-19 14:31:48

标签: indexing graph neo4j cypher nodes

以下是我用来构建我的第一个节点的查询:

MERGE (Precessional_Era_of_Leo:Event:Calendar 
  {Bible:-105
  , Gregorian:-11080
  , Duration:true
  , EndBible:2095
  , EndGregorian:-8880
  , Caption:"Precessional Era of Leo"
  , Weblink:"http://www.aquarian-age.net/flory.html"
  , ImageLink:"http://www.aquarian-age.net/flory.html"
  , Description:"The Precessional Era of Leo (2,200 years)"})
-[:LOCATION 
  {rname:"rlocation"
  , rtype:"from"
  , rleft:"Precessional Era of Leo"
  , rright:"Earth"}]->
(Earth:Planet:Place {Name:"Earth"})
-[:LOCATION 
  {rname:"rlocation"
  , rtype:"In orbit around"
  , rleft:"Earth"
  , rright:"Sol"}]->
(Sol:Star:Place {Name:"Sol"})
-[:LOCATION 
  {rname:"rlocation"
  , rtype:"in"
  , rleft:"Sol"
  , rright:"Milky Way"}]->
(Milky_Way:Galaxy:Place {Name:"Milky Way"})
-[:LOCATION 
  {rname:"rlocation"
  , rtype:"in"
  , rleft:"Milky Way"
  , rright:"Universe"}]->
(Universe:Place {Name:"The Universe"})
-[:LOCATION 
  {rname:"rlocation"
  , type:"in"
  , rleft:"Universe"
  , rright:"GOD"}]->
(GOD:Person:Spirit {Name:"YHWH"});

...这里是同一个查询的数据库转储:

create (_0:`Event`:`Calendar` {`Bible`:-105, `Caption`:"Precessional Era of Leo", `Description`:"The Precessional Era of Leo (2,200 years)", `Duration`:true, `EndBible`:2095, `EndGregorian`:-8880, `Gregorian`:-11080, `ImageLink`:"http://www.aquarian-age.net/flory.html", `Weblink`:"http://www.aquarian-age.net/flory.html"})

问题:为什么没有

Precessional_Era_of_Leo:Event:Calendar

出来

create (`Precessional_Era_of_Leo`:`Event`:`Calendar`)

而不是

create (_0:`Event`:`Calendar`

...

感谢您的回复!

2 个答案:

答案 0 :(得分:1)

反引号有助于逃避内容,否则这些内容将无法作为密码的一部分正常解析。所以如果你想给一个标签" Hello World",(有空格)你可以这样做,但是你必须在" Hello World"周围使用反引号。

最重要的是,您引用的标签不需要反引号,因为它们不包含任何其他语法上无效的密码。因此,无论您是否使用它们都无关紧要。标签名称和反引号包围的相同名称在功能上是等效的。

答案 1 :(得分:1)

在您的密码中Precessional_Era_of_Leo是您要合并的节点的标识符。它实际上不是EventCalendar这样的标签。标识符对您的查询是暂时的,而标签将保留在您创建的节点上的数据库中。