Neo4j图数据分页处理

本文介绍了Neo4j图数据库的分页处理,包括Node和Relationship的分页检索,通过Cypher语句实现。文章详细阐述了不同检索类型的Cypher语句,并讨论了数据分页模型类和接口方法的设计。
摘要由CSDN通过智能技术生成

首先简单介绍下Neo4j,Neo4j是一个高性能的NOSQL图形数据库,它将结构化数据存储在网络上而不是表中,它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)而不是表中。Neo4j也可以被看做是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。

Neo4j中涉及到几个关键的实体对象,分别是Node(节点)、Relationship(关系)、Path(路径)、Direction(关系方向)、RelationshipType(关系类型)。朋友们可以将Relationship(关系)看做是连接线,一条连接线每端只能连接一个Node(节点),并且连接线两端必须同时都连接有Node(节点);Relationship(关系)具有方向和类型特性。Node(节点)可以通过多Relationship(关系)与其他多个Node(节点)关联,而且Node(节点)也可以是没有任何连接的孤立节点。Path(路径)包含多个Node和Relationship,是节点和关系的集合。下图就是笔者本人利用Neo4j构建的一个“射雕英雄谱”局部关系图:

neo4j_graph

 

3.1. Neo4j数据分页检索类型

Neo4j数据分页检索接口采用自身的Cypher检索语句,通过构建Cypher分页检索语句,实现分页处理。

Neo4j数据库中不存在传统的表的概念,一个数据库可以视作一张图。数据分页检索将针对Node和Relationship分别进行,不针对Path进行分页检索,因为基本上没有什么意义。按照检索条件区分检索类型,可以细分为以下几种。

3.1.1 Node(节点)分页检索

1) 无条件检索Cypher语句

--不根据属性排序
START n=node(*) RETURN n SKIP 0 LIMIT 20

--根据属性排序
START n=node(*) RETURN n ORDER BY n.NAME DESC SKIP 0 LIMIT 20

2) 根据Property属性检索Cypher语句

--根据属性NAME值进行模糊检索
START n=node(*) WHERE n.NAME=~'.*tom*' RETURN n SKIP 0 LIMIT 20

--根据属性NAME值进行精确检索
START n=node(*) WHERE n.NAME='tom' RETURN n SKIP 0 LIMIT 20

3) 根据Index索引检索Cypher语句

复制代码
--说明:N_INDEX为索引名称,USER_NAME为索引Key名称

--根据索引值进行模糊检索
--模糊检索的多种格式。
--1、*tom*表示USER_NAME中包含tom字符串的
--2、*tom表示USER_NAME右侧匹配tom字符串的
--3、tom*表示USER_NAME左侧匹配tom字符串的
START n=node:N_INDEX('USER_NAME:*tom*') RETURN n SKIP 0 LIMIT 20

--根据索引值进行精确检索
START n=node:N_INDEX (USER_NAME='tom') RETURN n SKIP 0 LIMIT 20
复制代码

4) 根据Index索引和Property属性检索Cypher语句

复制代码
--根据索引(模糊)和属性(模糊)检索
START n=node:N_INDEX('USER_NAME:*tom*') WHERE n.USER_TYPE=~'.*sys*' RETURN n SKIP 0 LIMIT 20

--根据索引(模糊)和属性(精确)检索
START n=node:N_INDEX('USER_NAME:*tom*') WHERE n.USER_TYPE ='system' RETURN n SKIP 0 LIMIT 20

--根据索引(精确)和属性(模糊)检索
START n=node:N_INDEX(USER_NAME='tom') WHERE n.USER_TYPE=~'.*sys*' RETURN n SKIP 0 LIMIT 20

--根据索引(精确)和属性(精确)检索
START n=node:N_INDEX(USER_NAME='tom') WHERE n.USER_TYPE =
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值