学习记录-neo4j语句
创建节点
CREATE (<node-name>:<label-name>)
- node-name:要创建的节点名称,不能使用它来访问节点详细信息,可不写。
- label-name:节点标签名称,使用此标签名称来访问节点详细信息。
查询
查询某label的节点
MATCH (dept: Dept)
RETURN dept.deptno,dept.dname,dept.location
- dept只是个变量,可以填任意值
- match (变量:标签名) return 返回值
- 可返回节点也可返回节点的某些属性
查询某label中属性为特定值的节点
方式一:
MATCH (dept: Dept{dept.deptno:'1'})
RETURN dept
- {属性:属性值} 多个属性的话,用逗号隔开
方式二:
MATCH (dept: Dept)
WHERE dept.deptno = '1'
RETURN dept
从csv文件中导入节点
速度慢,节点数量少的情况下可用:
导入节点:
LOAD CSV WITH HEADERS FROM "file:///fileName.csv" AS line
MERGE (p:person{id:line.id,name:line.name,age:line.age})
导入关系:
LOAD CSV WITH HEADERS FROM "file:///rel.csv" AS line
match (from:person{id:line.from_id}),(to:person{id:line.to_id})
merge (from)-[r:rel{property1:line.property1,property2:line.property2}]->(to)
节点数量多时可以采用: batch-import工具,速度快
查询对相关节点有特定要求的节点
查询有3个以上相关节点的node1节点:
MATCH(a:node1) WITH a, Size((a)-[:usedby]->())AS ncount WHERE
ncount>3 MATCH (a)-[:usedby]->(b) RETURN a, b
多级查询
如果只有一种节点且查询方向为单向链可参考博客:关于neo4j查询多深度关系节点
例:查询从节点id为'12399145'的下一级及下下一级到节点
match (na:company)-[re]->(nb:company) where na.id = '12399145' WITH na,re,nb match (nb:company)-[re2]->(nc:company) return na,re,nb,re2,nc
返回从节点id为'12399145'的下一级到三级的节点
match data=(na:company{id:'12399145'})-[*1..3]->(nb:company) return data