飞道的博客

neo4j入门到精通——4、APOC组件和常用函数

627人阅读  评论(0)

一、常用函数

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进行可视化展示


转载:https://blog.csdn.net/qq_42778289/article/details/106145173
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场