学习记录-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
posted @ 2020-07-29 11:16  19呀  阅读(132)  评论(0编辑  收藏  举报