# 删除以往的所有节点和关系,MATCH是匹配操作,()表示一个节点,n是标识符 MATCH (n) DETACH DELETE n
# 创建一个标签为Person的节点,节点有一个name属性,属性值为'John' CREATE (n:Person{name:'John'}) RETURN n
# 从a到b建立起FRIENDS关系,关系有一个since属性,属性值为2001 MATCH (a:Person{name:'Liz'}),(b:Person{name:'Mike'})MERGE (a)-[:FRIENDS{since:2001}]->b
# 查询在Boston出生的所有Person MATCH (a:Person)-[:BORN_IN]->(b:location{city:'Boston'}) RETURN a,b
# 查询所有具有对外关系的节点 MATCH (a)-->() RETURN a
# 查询所有具有关系的节点 MATH (a)--() RETURN a
# 查询所有具有对外关系的节点,并返回节点的name属性值和关系类型 MATCH (a)-[r]->() RETURN a.name, type(r)
# 给a节点设置一个age属性,属性值为34 MATCH (a:Person{name:'Liz'}) SET a.age = 34
# 删除a节点的test属性 MATCH ... REMOVE a.test
# 删除a节点 MATCH ... DELETE a
当数据量过大时,可以将数据转变成UTF-8编码格式的.csv文件批量导入Neo4j
1 2 3 4 5 6 7 8 9 10 11 12 13 14
# 创建节点语法 # 从import文件夹中读取genre.csv # 创建标签为genre的节点,节点有两个属性genre_id、genre_name,属性值为genre.csv中的genre_id、genre_name load csv with headers from "file:///genre.csv" as line create (a:genre{genre_id:line.genre_id, genre_name:line.genre_name})
# 创建关系语法 # 从import文件夹中读取actor_to_movie.csv # 根据actor_to_movie.csv中的数据匹配a和m节点,并在它们之间建立ACTED_IN关系 load csv with headers from "file:///actor_to_movie.csv" as line match (a:Actor), (m:Movie) where a.actor_id = line[1] and m.movie_id = line[2] create (a)-[:ACTED_IN]->(m)
# PS:上述载入关系有时会因数据规模太大产生笛卡尔积而Neo4j不予通过,可改用以下形式分三次执行,结果一样 load csv with headers from "file:///actor_to_movie.csv" as line create (a:actor_to_movie{actor_id:line.actor_id, movie_id:line.movie_id}) match (a:actor), (m:movie), (n:actor_to_movie) where a.actor_id = n.actor_id and m.movie_id = n.movie_id create (a)-[:ACTED_IN]->(m) match (n:actor_to_movie) delete n