二、neo4j入门笔记(Cypher语法与简单实例)(一)

一、专业名词

可以参考https://blog.csdn.net/alex_xfboy/article/details/82970127#3.%20%E4%B8%93%E4%B8%9A%E5%90%8D%E8%AF%8D,图文并茂写的非常好,这里我只是做个人的简单总结。

Node Labels 表示存在的节点

Relationship Types表示存在的关系

Property Keys 表示节点或者关系的属性


二、语法现象

这里我参照官方文档,以及官方手册。登陆http://localhost:7474/browser/,在jump into code中点击按钮,

我们可以看到它包含Create、Find、Query、Solve,这只是笼统的叫法,接下来会有详细的语法规则

1、CREATE


在这个例子中,它创造了许多电影、人物,并赋予人物与电影以关系(出演、导演、编剧等),还有人物与人物的关系(follows关系等),效果如图

示例结束

现在具体讲述CREATE语法规则

先看一个例子

CREATE (:Movie { title:"The Matrix",released:1997 }

我们可以看到它没有返回数据,有一个node(节点),一个label(标签),两个properties(属性)。

+-----------------------+

| No data returned.|

+-----------------------+

Nodes created: 1 

Properties set: 2 

Labels added: 1


如果我们还想返回创建的数据,我们可以添加一个return子句

CREATE (p:Person { name:"Keanu Reeves", born:1964 })

RETURN p

这是返回的内容

+----------------------------------------+

| p                                      |

+----------------------------------------+

| Node[1]{name:"Keanu Reeves",born:1964} |

+----------------------------------------+

1 row

Nodes created: 1

Properties set: 2

Labels added: 1

当然,我们也可以创建更复杂的结构,比如ACTED_IN与角色信息的关系,或者DIRECTED的直接关系。

CREATE (a:Person { name:"Tom Hanks",

  born:1956 })-[r:ACTED_IN { roles: ["Forrest"]}]->(m:Movie { title:"Forrest Gump",released:1994 })

CREATE (d:Person { name:"Robert Zemeckis", born:1951 })-[:DIRECTED]->(m)

RETURN a,d,r,

这里说明一下,Cypher使用一对破折号(--)来表示无向关系。有向关系在一端有一个箭头(<--, -->)。括号内的表达式([…])可用于添加细节。这可能包括变量、属性和类型信息:

形如

-->

-[role]->

-[:ACTED_IN]->

-[role:ACTED_IN]->

-[role:ACTED_IN {roles: ["Neo"]}]->

节点间的关系如图


2、MATCH

要查找到目前为止我们创建的数据,我们可以开始查找标记为Movie label的所有节点。

MATCH (m:Movie)

RETURN m

结果:

我们也可以找一个特定的person,比如Keanu Reeves

MATCH (p:Person { name:"Keanu Reeves" })

RETURN p

此查询返回匹配的节点


我们也可以找到更多有趣的联系,比如Tom Hanks扮演的电影片名和他扮演的角色。

MATCH (p:Person { name:"Tom Hanks" })-[r:ACTED_IN]->(m:Movie)

RETURN m.title, r.roles

+-------------------------------------+

| m.title                | r.roles       |

+-------------------------------------+

| "Forrest Gump" | ["Forrest"]  |

+-------------------------------------+

1 row

现在,我们已经知道如何将新节点连接到现有节点,并且可以结合使用MATCH和CREATE来将结构附加到图中。


3、附加结构(小实例)

为了用新的信息扩展图,我们首先匹配现有的连接点,然后用关系将新创建的节点附加到它们上。加入电影《Cloud Atlas》作为Tom Hanks的新电影可以这样实现:

MATCH (p:Person { name:"Tom Hanks" })

CREATE (m:Movie { title:"Cloud Atlas",released:2012 })

CREATE (p)-[r:ACTED_IN { roles: ['Zachry']}]->(m)

RETURN p,r,m


重要的是要记住,我们可以将变量分配给节点和关系,并在以后使用它们,无论它们是创建的还是匹配的。

可以在一个CREATE子句中附加节点和关系。但是为了可读性,将它们分开会有所帮助。


MATCH和CREATE组合的一个棘手之处是,每个匹配模式都有一行。这将导致后续的CREATE语句对每一行执行一次。在很多情况下,这就是你想要的。

如果不打算这样做,请在匹配之前移动CREATE语句,或者使用后面讨论的方法更改查询的基数,或者使用下一个子句的get或CREATE语义的:MERGE。

4、MERGE

merge可以看成是match和create的合体,留着下次再讲。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容