Neo4j常见语句-create

以下是create的常见用法
创建节点

//新建一个Start的标签节点,属性为name和age
create(n:Star{name:"成龙",age:70});
//创建多个的写法
CREATE 
  (n2:Star {name: "刘德华", age: 61}),
  (n3:Star {name: "张学友", age: 62})
RETURN n2, n3
//或者使用如下写法
WITH [
  {name: "吴京", age: 58},
  {name: "周润发", age: 68},
  {name: "梁朝伟", age: 61}
] AS starsData

UNWIND starsData AS starData
CREATE (s:Star {name: starData.name, age: starData.age})
RETURN s
//创建节点User,同时新增三条数据,并创建FRIEND关系
CREATE (adam:User{name: "Adam" } ) , (pernilla:User{ name:"Pernilla"}), 
(david:User{ name:"David"}), (adam)-[:FRIEND]->(pernilla), 
(pernilla)-[:FRIEND]->(david)

创建关系

//创建单边关系,
match (s1:Star{name:"吴京"}),(s2:Star{name:"成龙"})  create (s1)-[r:friend]->(s2) return r;
//创建双边关系,并给关系添加属性
MATCH 
  (s1:Star {name: "吴京"}), 
  (s2:Star {name: "成龙"})
CREATE 
  (s1)-[:FRIEND {since: 2015}]->(s2),  -- 吴京是成龙的朋友
  (s2)-[:FRIEND {since: 2015}]->(s1)   -- 成龙是吴京的朋友
RETURN s1, s2
### 导入 CSV 文件以构建 Neo4j 图数据库 为了通过 Cypher Shell 或命令行导入 `actors.csv`、`movies.csv` 和 `roles.csv` 文件并构建图数据库结构,可以按照以下方法操作: #### 1. 准备工作 确保所有的 CSV 文件都位于 `${NEO4J_HOME}/import` 目录下。如果需要从其他路径加载文件,则需修改 `neo4j.conf` 配置文件,注释掉 `dbms.directories.import=import` 的限制[^2]。 #### 2. 创建节点和关系 以下是具体的 Cypher 查询语句用于导入数据: ##### (a) 导入演员节点 (`actors.csv`) 假设 `actors.csv` 文件的第一列是唯一标识符 `id`,第二列为姓名 `name`: ```cypher LOAD CSV WITH HEADERS FROM 'file:///actors.csv' AS row CREATE (:Actor {id: toInteger(row.id), name: row.name}) ``` 此查询会将每一行的数据转换为一个 `Actor` 节点,并赋予其属性 `id` 和 `name`[^1]。 ##### (b) 导入电影节点 (`movies.csv`) 假设 `movies.csv` 文件的第一列是唯一标识符 `movieId`,第二列为电影名称 `title`,第三列为发行年份 `released`: ```cypher LOAD CSV WITH HEADERS FROM 'file:///movies.csv' AS row CREATE (:Movie {movieId: toInteger(row.movieId), title: row.title, released: toInteger(row.released)}) ``` 这一步创建了 `Movie` 类型的节点,并设置了相应的属性。 ##### (c) 导入角色关系 (`roles.csv`) 假设 `roles.csv` 文件包含三列:`actorId` 表示演员 ID,`movieId` 表示电影 ID,以及 `role` 列表示角色名: ```cypher LOAD CSV WITH HEADERS FROM 'file:///roles.csv' AS row MATCH (a:Actor {id: toInteger(row.actorId)}), (m:Movie {movieId: toInteger(row.movieId)}) CREATE (a)-[:ACTED_IN {role: row.role}]->(m) ``` 这段代码首先匹配对应的 `Actor` 和 `Movie` 节点,然后建立两者之间的 `ACTED_IN` 关系,并附加角色信息作为关系属性。 #### 3. 处理重复节点问题 当存在重复的节点时,可以通过参数选项忽略这些冲突。例如,在使用 `neo4j-admin import` 工具时加入 `--ignore-duplicate-nodes=true` 参数即可避免错误发生[^3]。 #### 4. 测试查询 完成上述步骤后,可通过简单的 Cypher 查询验证数据是否成功导入。比如查找特定名字开头的人及其参与过的影片: ```cypher MATCH (p:Person)-[r:ACTED_IN]->(m:Movie) WHERE p.name STARTS WITH 'K' RETURN p, r, m ``` #### 注意事项 - 如果遇到性能瓶颈或者大数据量场景下的优化需求,请考虑批量处理方式或调整 JVM 堆内存大小等高级设置。 - 对于更复杂的过滤条件可参考样例查询[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值