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
浙公网安备 33010602011771号