文章目录
一、常用函数
UPPER
UPPER 用于将所有字母更改为大写字母。
Match (n:Person) return UPPER (n.name)
LOWER
LOWER 用于将所有字母改为小写字母。
Match (n:Person) return LOWER(n.name)
SUBSTRING
SUBSTRING 用于获取给定String的子字符串。
Match (n:Person) return SUBSTRING(n.id,2,0),n.id
REPLACE
REPLAC 用于替换一个字符串的子字符串。
聚合函数
COUNT —— 它返回由MATCH命令返回的行数。
MAX —— 它从MATCH命令返回的一组行返回最大值。
MIN —— 它返回由MATCH命令返回的一组行的最小值。
SUM —— 它返回由MATCH命令返回的所有行的求和值。
AVG —— 它返回由MATCH命令返回的所有行的平均值。
二、APOC
1、什么是 APOC
APOC简介
APOC 是 neo4j 自带一款强大的功能组件。它引入了用户自定义过程和函数概念,某些Cypher本身不能轻易实现的自定义功能可以由 APOC 完成。它是用Java实现的,Apoc 库由许多(大约450个)过程和函数组成,用于在数据集成、图形算法或数据转换等领域帮助完成许多不同的任务。
APOC组件功能
1、text and lookup indexes(文本和索引查找)
提供索引查询、管理,全文图标和搜索功能
2、utility functions(实用函数)
域名提取,时间和日期,数字格式转换等功能
3、graph algorithma(图算法)
社区检测,pagerank,中心算法等
4、spatial(空间函数)
地理编码,位置计算,空间与时间搜索等
5、data integration(数据集成)
JSON, JDBC, csv等格式数据加载
6、graaoh refactorings(图形重构)
节点合并,属性规范化与分类等
7、virtual nodes/rels(虚拟节点、关系)
提供虚拟图的创建
8、gypher operations(cypher 操作)
单个和多个的cypher语句运行和脚本运行
9、triggers(触发器)
类似mysql
2、常见的用法
1 > 用apoc从其他数据库抽取数据
call apoc.load.jdbc("jdbc:mysql://ip地址:端口号/数据库名称?user=用户名&password=用户密码&serverTimezone=UTC&characterEncoding=utf-8","meeting")yield row MERGE (:Solder { name :row.writter })
在 (。。。。。。)yield row 后面接创建节点或者关系的 Cypher ,用row.列名来从关系型数据库中取值
2 > 导出数据
1、导出所有数据为csv格式
call apoc.export.csv.all('data.csv',{})
2、导出指定的对象和关系,聚合后导出
CALL apoc.export.csv.query("match (n:People)-[r:relation]->(m:People) return n.name, size(collect(r)), m.name", "nmr.csv", {})
3 > 生成图形(可用于大批量创建测试数据)
CALL apoc.generate.ba(1000,2,'Person','FRIEND')
// Barabasi-Albert 模型生成一个随机图
CALL apoc.generate.er(1000,10,'Person','CLASS')
// 根据 Erdos-Renyi 模型生成一个随机图
CALL apoc.generate.complete(10,'TestLabel', 'TEST_REL')
// 生成一个随机的完整图形
CALL apoc.generate.simple([2,2,2,2], 'STU', 'CLASS')
// Simple (degrees,label,type)-根据给定的度分布生成一个简单的随机图
具体效果大家可以跑一下代码看看,改改里面参数看看效果。
4 > 判断数据类型
return apoc.meta.type('hello')
// 返回 STRING
return apoc.meta.type(["hello", "world"])
// 返回 LIST
match (n:Person)-[r]-(m:Person) where n.name="王某某" return apoc.meta.type(r.updatetime)
// 返回关系或节点上某个属性的数据类型
补充说明
说明一
APOC 组件的功能十分强大,有很多笔者也没有用到,因此不在一一列举。大家感兴趣的可以查阅官方api。
APOC的api地址:https://neo4j.com/docs/labs/apoc/3.5/
说明二
关于利用 APOC 从其他数据库抽取数据,本人后期会抽时间写一个关于 Neo4j 的javaweb项目作为学习demo。该demo主要包括下列内容:
1、从关系型数据库抽取数据建库
2、java api操作Neo4j图数据库
3、用D3.js对Neo4j进行可视化展示