Neo4J CQL语句

这篇具有很好参考价值的文章主要介绍了Neo4J CQL语句。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

新增

创建

含义

# study 实体
# 学生 标签
# name 对应字段

create(study:学生{name:"张三"})
create(study:学生{name:"李四"})
create(study:学生{name:"王五"})
create(study:学生{name:"dsy",age:18})

create(city:城市{name:"西安"})

建立关系

match(n:学生{name:"张三"}),(p:城市{name:"西安"}) create (n)-[:出生于] ->(p)
match(n:学生{name:"李四"}),(p:城市{name:"西安"}) create (n)-[:出生于] ->(p)

match (n:学生{name:"张三"}),(n2:学生{name:"李四"}) create (n)-[:兄弟]->(n2)

Set字句

有时,根据我们的客户端要求,我们需要向现有节点或关系添加新属性(字段)。要做到这一点,Neo4j CQL提 供了一个SET子句。

#学生表添加 城市为西安 的字段
match(n:Student{name:"李四"}) set n.city="西安" return n

查询

查询所有节点

match(n) return n

查询指定条件的数据 where子句

match(n) where n.age = 18 return n

查询指定Label(标签)的数据

match(n:`学生`) return n

查询指定字段名称的数据

match(n{name:'张三'}) return n

查询主节点下所关联的对应子节点

#查询出生于西安的所有Person数据
match(n1:province{name:"西安"})<-[:出生于]-(n2:Person) return n2

order by排序

#根据id进行排序,返回id和name字段
match (n:`学生`) return id(n),n.name order by id(n) asc
match (n:`学生`) return id(n),n.name order by id(n) desc

Union子句

#返回结果去重
match(n:`学生`) return n.name as name union match(n:Student) return n.name as name

#返回结果不去重
match(n:`学生`) return n.name as name union all match(n:Student) return n.name as name

Limit和Skip子句

#前两行
match(n:`学生`) return n.name limit 2

#忽略前两行
match(n:`学生`) return n.name skip 2

NUll值

如tom的age,name,sex都为null

Neo4J CQL语句,数据库,neo4j

#查询年龄为null的数据
match(n:Student) where n.age is null return id(n),n.name,n.age

Neo4J CQL语句,数据库,neo4j

IN查询

match(n:Student) where n.name in ["tom","李四"] return id(n),n.name,n.age

Neo4J CQL语句,数据库,neo4j

INDEX索引

创建索引

create index on :Student (name)

删除索引

drop index on:Student (name)

创建唯一索引

create constraint on (n:Student) assert n.name is unique

删除唯一索引

drop constraint on (n:Student) assert n.name is unique

Distinct

match(n:Student) return distinct(n.name)

删除

delete删除

删除标签下所有数据

create(n:班级{name:"一年级"})
create(n:班级{name:"二年级"})

match(n:`班级`) delete n

如果报错如下,说明节点包含关系

Neo4J CQL语句,数据库,neo4j

删除节点关系

删除完节点关系就可以删除节点了

match(n:`班级`{name:"一年级"})<-[r]-(m) delete r return type(r)

删除节点子句

match(n:`班级`{name:"一年级"}) delete n

remove删除

有时基于客户端要求,我们需要向现有节点或关系添加或删除属性。我们使用Neo4j CQL REMOVE子句来删除节点或关系的现有属性。

#添加多个节点
create (n:Student{name:"张三",age:18,sex:"男"})
create (n:Student{name:"张三",age:18,sex:"男"}),(b:Student{name:"李四",age:14,sex:"女"})

#删除属性(字段)
match(n:Student{name:"张三"}) remove n.age return n

#删除标签(整条数据)
match(n:Student{name:"张三"}) remove n:Student return n

常用函数

字符串函数

功能

描述

示例

UPPER/toUpper

将所有字母转为大写

match(n:Student) return toUpper(n.name)

LOWER/toLower

将所有字母转为小写

match(n:Student) return tolower(n.name)

SUBSTRING

获取指定截取的字符串

match(n:Student) return SUBSTRING(n.name,0,1)

REPLACE

替换一个字符串(tom改为cs)

match(n:Student) return replace(n.name,'tom','cs')

聚合函数

功能

描述

示例

count

返回行数

match(n:Student) return count(n)

max

返回最大值

match(n:Student) return max(id(n))

min

返回最小值

match(n:Student) return min(id(n))

sum

求和

match(n:Student) return sum(n.age)

avg

平均值

match(n:Student) return avg(n.age)

关系函数

左边为子节点,右边为主节点 比如 Person中的张三出生于province中的西安

功能

描述

示例

startnode

获取关系的开始节点

match(n1:Person)-[r]->(n2:province) return startnode(r)

endnode

获取关系的结束节点

match(n1:Person)-[r]->(n2:province) return endnode(r)

id

获取关系的ID

match(n1:Person)-[r]->(n2:province) return id(r)

type

获取字符串表示中的一个关系的type

match(n1:Person)-[r]->(n2:province) return type(r)

算法推荐商品

create(:商品{id:1,name:"阿莫西林",price:12,stockNum:100})
create(:商品{id:2,name:"小儿七星茶颗粒",price:8,stockNum:100})
create(:商品{id:3,name:"益心舒胶囊",price:8.4,stockNum:100})
create(:商品{id:4,name:"红霉素软膏",price:2.3,stockNum:100})
create(:`商品`{id:5,name:"枸杞",price:2.2,stockNum:100})
create(:`商品`{id:6,name:"桑葚",price:2,stockNum:100})


create(:用户{id:101,name:"张三"})
create(:用户{id:102,name:"李四"})
create(:用户{id:103,name:"王五"})
create(:用户{id:104,name:"TOM"})
create(:用户{id:105,name:"jerry"})

match(n1:`用户`{id:101}),(n2:`商品`{id:1}) create(n1)-[:购买]->(n2)
match(n1:`用户`{id:101}),(n2:`商品`{id:2}) create(n1)-[:购买]->(n2)
match(n1:`用户`{id:101}),(n2:`商品`{id:3}) create(n1)-[:购买]->(n2)
match(n1:`用户`{id:101}),(n2:`商品`{id:4}) create(n1)-[:购买]->(n2)

match(n1:`用户`{id:102}),(n2:`商品`{id:1}) create(n1)-[:购买]->(n2)
match(n1:`用户`{id:102}),(n2:`商品`{id:4}) create(n1)-[:购买]->(n2)
match(n1:`用户`{id:102}),(n2:`商品`{id:5}) create(n1)-[:购买]->(n2)
match(n1:`用户`{id:102}),(n2:`商品`{id:6}) create(n1)-[:购买]->(n2)

match(n1:`用户`{id:103}),(n2:`商品`{id:2}) create(n1)-[:购买]->(n2)
match(n1:`用户`{id:103}),(n2:`商品`{id:3}) create(n1)-[:购买]->(n2)

match(n1:`用户`{id:104}),(n2:`商品`{id:1}) create(n1)-[:购买]->(n2)
match(n1:`用户`{id:104}),(n2:`商品`{id:3}) create(n1)-[:购买]->(n2)

在这个例子中,我们使用协同过滤算法来实现基于用户的商品推荐。具体地,我们找到与目标用户有共同购买行为的其他用户,并返回这些用户最喜欢的、目标用户尚未购买的商品。

可以使用以下 Cypher 查询语句来实现协同过滤算法:

这个查询语句会找到与目标用户 ID 为 101 的用户有共同购买行为的其他用户,并返回他们购买过的、目标用户尚未购买的商品。结果按照共同购买用户数量降序排列,并只返回前 3 个推荐商品。

MATCH (u:`用户` {id: 101})-[:购买]->(p:`商品`)<-[:购买]-(ou:`用户`)-[:购买]->(rec:`商品`)
WHERE NOT EXISTS((u)-[:购买]->(rec))
WITH rec, COUNT(DISTINCT ou) AS similarity
ORDER BY similarity DESC
LIMIT 3
RETURN rec.name, similarity

实现推荐查询:

○ 使用 Cypher 查询语句,根据目标用户 ID 查找该用户已购买的商品。

○ 基于协同过滤算法,使用以上的查询语句查找与目标用户具有相关性的其他商品。

○ 返回推荐结果。文章来源地址https://www.toymoban.com/news/detail-813230.html

到了这里,关于Neo4J CQL语句的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 图数据库Neo4j——Neo4j简介、数据结构 & Docker版本的部署安装 & Cypher语句的入门

    MySQL是一种开源的关系型数据库管理系统,使用SQL作为其查询语言,常见的关系型数据库有MySQL、Oracle、SQL Server、PostgreSQL等。相关博客文章如下: 【合集】MySQL的入门进阶强化——从 普通人 到 超级赛亚人 的 华丽转身 PostgreSQL数据库——Docker版本的postgres安装 Navicat连接方式

    2024年02月06日
    浏览(63)
  • Neo4J 特性CQL语句,函数,Springboot集成

      随着社交、电商、金融、零售、物联网等行业的快速发展,现实社会织起了了一张庞大而复杂的关系 网,传统数据库很难处理关系运算。大数据行业需要处理的数据之间的关系随数据量呈几何级数增长, 急需一种支持海量复杂数据关系运算的数据库,图数据库应运而生

    2024年02月12日
    浏览(50)
  • Neo4j:入门基础(二)~ 数据导入Neo4J RDF导入neo4j数据库

    neo4j导入数据的方式有以下几种: Cypher create 语句,为每一条数据写一个create Cypher load csv 语句,将数据转成CSV格式,通过LOAD CSV读取数据。 neo4j-admin import导入 官方提供的Java API - BatchInserter 大牛编写的 batch-import 工具 neo4j-apoc load.csv + apoc.load.relationship 针对实际业务场景,定制

    2023年04月24日
    浏览(74)
  • Neo4j | 保姆级教学之如何清空neo4j数据库

    要清空neo4j数据库,需要进行以下操作: 停止Neo4j服务器,关闭Neo4j的所有连接。 找到 Neo4j 数据库存储的目录,通常是 data/databases/ 。 删除该目录中的所有文件和子目录。 请注意,这将不可逆地删除数据库的所有内容,包括节点、关系和属性等数据。在执行这个操作之前,请

    2024年02月06日
    浏览(53)
  • Neo4j数据库删除数据

    我们使用Neo4j图数据库进行写入数据操作之后,免不了要删除数据的。 但是Neo4j的控制台没有提供快捷的删除按钮,所以我们还是需要通过命令来操作。 如果数据库中的数据量并不大,节点数相对较少,我们可以通过命令行直接删除节点。 此类操作起到清空数据库的效果,但

    2023年04月09日
    浏览(92)
  • Neo4j 图形数据库

    目录 Neo4j 基础 什么是Neo4j Neo4j 模块构建 Neo4j的主要应用场景 Neo4j 环境搭建 Docker 安装Neo4j Neo4j数据浏览器  Neo4j CQL CQL简介 Neo4j CQL高级 CQL 函数 CQL多深度关系节点 事务 索引 约束 Neo4j之Admin管理员操作 Neo4j - 数据库备份和恢复 调优思路  Neo4j 程序访问 SpringBoot 整合Neo4j

    2024年02月10日
    浏览(50)
  • neo4j清空数据库

    清空所有Person、 Movie节点及其所有关系 查询任意数据  如果没有, 就说明已经删除成功了 这段代码是用Cypher查询语言编写的,用于清空所有的Person节点、Movie节点以及它们之间的所有关系。让我们逐步解释代码的每个部分: 这部分代码使用MATCH语句来查找图数据库中的所有

    2024年02月14日
    浏览(47)
  • 图数据库Neo4j——SpringBoot使用Neo4j & 简单增删改查 & 复杂查询初步

    图形数据库是专门用于存储图形数据的数据库,它使用图形模型来存储数据,并且支持复杂的图形查询。常见的图形数据库有Neo4j、OrientDB等。 Neo4j是用Java实现的开源NoSQL图数据库,本篇博客介绍如何在SpringBoot中使用Neo4j图数据库,如何进行简单的增删改查,以及如何进行复杂

    2024年02月06日
    浏览(63)
  • 图数据库_Neo4j的使用场景_以及Windows版Neo4j Community Server安装_欺诈检测_推荐_知识图谱---Neo4j图数据库工作笔记0003

    可以看到使用场景,比如欺诈检测, 要建立图谱,才能进行,欺诈人员检测   可以看到图谱的各种应用场景 然后推荐引擎也需要,可以看到 在金融,旅行,求职招聘,保健,服务,媒体娱乐,都可以进行推荐   然后还有知识图谱 身份访问管理,这里,可以进行安全管理,可以挖掘出潜在关系

    2024年02月12日
    浏览(45)
  • 图数据库_Neo4j中文版_Centos7.9安装Neo4j社区版3.5.9_基于jdk1.8---Neo4j图数据库工作笔记0012

        由于我们在国内使用啊,具体还是要用中文版滴,找了好久这个neo4j,原来还是有中文版的, 中文版下载地址在这里: 所有版本都在这里了,需要哪个自己去下载就可以了,要注意下载以后,参考:  在这个位置下载,主要是找到对应中文版的安装包,花了写时间啊 然后我们看一下安装

    2024年02月12日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包