- 下载
- 启动关闭命令
- cql语句
- 新增
- 查询
- 删除
- 修改
- 索引
- 约束
- 函数
- 备份
- SpringBoot集成
- 环境
- 创建实体类
- dao层
- controller层
下载链接
注意: neo4j版本超过4的,需要jdk11来支持,一般我们开发环境都是jdk1.8,所以我们只需选择3版本最高的即可。
#1. 控制台启动 ./neo4j.bat console #2. 作为守护进程 #启动 ./neo4j.bat start #关闭 ./neo4j.bat stop #3. 浏览器输入地址http://localhost:7474,输入初始用户密码neo4j,按照步骤修改初始密码cql语句
- create 创建节点、关系和属性
- match 检索有关节点、关系和属性数据
- return 返回查询结果
- where 提供条件过滤检索数据
- delete 删除节点和关系
- remove 删除节点和关系的属性
- order by 排序检索数据
- set 添加或更新标签
#1. 导入excel,注意:excel必须是csv,并且编码必须是UTF-8,excel放到安装目录neo4j-community-3.5.30import下 # 命令格式 load csv from "file:///本地路径" as 别名 create (:标签名 {字段1:别名{索引},字段2:别名{索引},...}) # demo load csv from "file:///xiyou/西游关系表.csv" as line create (:xiyouRelation {from:line{1},relation:line{3},to:line{0}}) #2. 创建关系 # 命令格式 match... create (开始节点)-[关系]->(目标节点) # demo match (m:xiyouPerson),(n:xiyouRelation),(s:xiyouPerson) where m.name = n.from and s.name = n.to create (m:xiyouPersonNew)-[n.relation]->(n:xiyouPersonNew) #3. 创建多标签节点 # 命令格式 create (变量:标签1:标签2... {}) # demo create (n:student:person {name:"张三",age:23})查询
#1. 查询节点 # 命令格式 match (变量:标签 {字段:条件值}) where 条件 return 变量 # demo match (n:xiyouPerson {name:"孙悟空"}) return n #注意:如果id是数据库自动生成的,则单独查询id时,需要用id(变量)查询 match (n:xiyouPerson {name:"孙悟空"}) return n.name,id(n) match (n:xiyouPerson) where n.name = "孙悟空" return n #多标签查询 match (m:xiyouPerson),(n:xiyouRelation) where m.name = n.from return m.name,n.relation,n.to #2. 查询关系 # 命令格式 match 变量 = (开始节点)-[关系]->(目标节点) where 条件 return 变量 # demo match p = ()-[r:xiyougx]->(n:xiyouPerson) where n.name = "沙僧" return p #3. 排序 # 命令格式 match ... return ... order by 字段 asc/desc # demo match (n:xiyouPerson) return id(n),n.name order by id(n) desc #4. 分页查询 # 限制返回条数 match (n:xiyouPerson) return id(n),n.name order by id(n) desc limit 10 # 跳过前10条 match (n:xiyouPerson) return id(n),n.name order by id(n) desc skip 10 #5. 并集查询(注意并集查询必须保证字段名相同,所以要起别名) # 并集去重 match (n:xiyouPerson) return n.name as name union match (m:person) return m.name as name # 并集不去重 match (n:xiyouPerson) return n.name as name union all match (m:person) return m.name as name #6. 查询有某个属性的节点(null)注意:即便那个属性的值是空串,那个属性也是存在的,唯有这个属性不存在才能满足下面的查询 match (n:xiyouPerson) where n.label is not null return n #7. in的用法 match (n:xiyouPerson) where n.name in['孙悟空','唐僧'] return n #删除
#1. 删除节点 # 命令格式 match (变量:标签名) delete 变量 # demo match (n:xiyouRelation) delete n #2. 删除关系 # 命令格式 match ()-[变量:关系类型]->() where 条件 delete 变量 # demo match ()-[r:xiyougx]->(n:xiyouPerson) where n.name = "沙僧" delete r #3. 移除节点标签 # 命令格式 match (变量:标签1:标签2... {name:"张三"}) remove 变量:移除的标签 # demo match (n:student:person {name:"张三"}) remove n:student #4. 移除节点的属性 # 命令格式 match (变量:标签 {}) remove 变量.移除属性 # demo match (n:person {name:"张三"}) remove n.age修改
#1. 添加或修改属性的值 # 命令格式 match (变量:标签 {}) set 变量.属性名 = 值 # demo match (n:person {name:"张三"}) set n.age = 23索引
# 创建索引 create index on :xiyouPerson(name) # 删除索引 drop index on :xiyouPerson(name)约束
# 唯一约束:unique create constraint on (n:xiyouPerson) assert n.name is unique函数
- 字符串函数:
- upper 大写
- lower 小写
- substring 截取
- replace 替换
- 聚合函数:
- count
- max
- min
- sum
- avg
- 关系函数
- startnode 关系开始节点
- endnode 关系结束节点
- id 关系ID
- type 关系的类型
# 去重 match (n:xiyouPerson) return distinct(n.name)备份
1. 关闭数据库 neo4j install service neo4j stop 2. 备份 neo4j-admin dump --database=graph.db --to=/neo4j/backup/graph_backup.dump 3. 恢复 neo4j-admin load --from=/neo4j/backup/graph_backup.dump --database=graph.db --forceSpringBoot集成 环境
创建实体类org.springframework.boot spring-boot-starter-data-neo4j
import org.springframework.data.neo4j.core.schema.*; import java.io.Serializable; import java.util.HashSet; import java.util.Set; @Node("xiyouPerson") public class XiYouPerson implements Serializable { @Id @GeneratedValue private Long id; @Property private String name; }dao层
@Repository public interface XiyouPersonDao extends Neo4jRepositorycontroller层{ }
import org.neo4j.driver.Driver; import org.neo4j.driver.Record; import org.neo4j.driver.Session; import org.neo4j.driver.Value; import org.neo4j.driver.types.Node; import org.neo4j.driver.types.Path; import org.neo4j.driver.types.Relationship; @CrossOrigin(origins ="*",maxAge =3600) @RestController @RequestMapping("/neo4j") public class Neo4jController { @Autowired private XiyouPersonDao xiyouPersonDao; @Autowired private Driver driver; @RequestMapping(value = "/queryByCQLGX.do" , produces = "application/json;charset=utf-8" ,method = RequestMethod.GET) public Result queryByCQLGX(){ org.neo4j.driver.Result result = driver.session().run("MATCH p=()-[r:xiyougx]->() RETURN p LIMIT 25"); Listlist = result.list(); List
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)