neo4j(一)入门篇(2)

1、创建节点并添加属性

(1)添加节点

使用CREATE创建节点

CREATE(me:Person {name:"litufu"})
RETURN me

  

查找刚刚创建的节点:

MATCH(p:Person)
WHERE p.name="litufu"
RETURN p

 相当于

MATCH(p:Person {name:"litufu"})
RETURN p

  查找所有的节点:

MATCH(n)
RETURN n

  又有未指定类型和属性,因此所有的节点都将被找到。

(2)添加属性

添加一部电影名字叫“Mystic River”,发行日期是1993年

CREATE(movie:Movie {title:"Mystic River",released:1993})
RETURN movie

  找到演员,他在电影Mystic River中演了一个Sean的角色,

MATCH (movie:Movie) WHERE movie.title="Mystic River"
MATCH (p:Person) WHERE p.name="Kevin Bacon"
CREATE (p)-[r:ACTED_IN {roles:["Sean"]}]->(movie)
RETURN p,movie,r

  为电影Mystic River添加一个标签行属性,首先找到该电影,然后使用SET

MATCH(movie:Movie)
WHERE movie.title="Mystic River"
SET movie.tagline="this is a good film"
RETURN movie.title as tile,movie.tagline as tagline

  由于Neo4j是无架构的,因此您可以将任何属性添加到任何节点或关系中。

(3)更新属性

更新属性和添加属性一样使用SET

如更新电影发行年份为2003年

MATCH(movie:Movie)
WHERE movie.title = "Mystic River"
SET movie.released=2003
RETURN movie.title as title,movie.released as released

  如果存在released属性就更新,如果不存在就新增。

2、添加关系

首先找到两个节点,然后使用SET来添加关系

添加一个me的节点

CREATE (me:Person {name:"My Name"})
RETURN me.name

  在me节点和movie节点之间创建关系

MATCH (me:Person), (movie:Movie)
WHERE me.name="My Name" AND movie.title="Mystic River"
CREATE (me)-[r:REVIEWED {rating:80, summary:"tragic character movie"}]->(movie)
RETURN me, r, movie

  或者

MATCH (me:Person {name:"My Name"}),(movie:Movie {title:"Mystic River"})
CREATE (me)-[r:REVIEWED {rating:80, summary:"tragic character movie"}]->(movie)
RETURN me, r, movie 
MATCH (p:Person {name:"Clint Eastwood"}),(movie:Movie {title:"Mystic River"})
MERGE (p)-[r:DIRECTED]->(movie)
RETURN r

  可以使用MERGE代替CREATE,MERGE代表的意思是获取或者创建pattern

3、删除节点

MATCH(p:Person {name:"My Name"})
OPTIONAL MATCH (p)-[r]-()
DELETE p,r

  删除节点,并且删除所有节点之间的关系。OPTIONAL MATCH类似于WHERE.

 由于删除节点及其关系是普遍的操作,因此我们可以使用DETACH DELETE来删除节点。
MATCH(p:Person {name:"Emil Eifrem"})
DETACH DELETE p

  

4、Order By, Limit, and Skip

使用ORDER BY按照出生日期排序

MATCH (person:Person)
RETURN person.name, person.born
ORDER BY person.born

  

使用SKIP和LIMIT来进行分页

MATCH (actor:Person)-[:ACTED_IN]->(movie:Movie)
RETURN actor.name AS Actor, movie.title AS Movie
SKIP 10 LIMIT 10;

  

5、DISTINCT

返回唯一的对象,如果一个人参演了多部电影,那么得到的结果前5名老人中可能包含重复的人,使用DISTINCT可以去除重复。

MATCH (p:Person)-[r:ACTED_IN]->()
RETURN DISTINCT p
ORDER BY p.born
LIMIT 5

  

 

 

 

posted @ 2018-09-13 12:41  tutu_python  阅读(103)  评论(0)    收藏  举报